почему я не могу вычислить массив во втором цикле, когда я использую sizeof(array)/sizeof(array[0]) в качестве условия для цикла for?
почему я не могу вычислить массив во втором цикле, когда я использую sizeof(array)/sizeof(array[0]) в качестве условия для цикла for?
#include <iostream>
using namespace std;
int main(){
int num;
int array[] = {};
cout << " enter the numbers " << endl;
for (int i = 0 ; i < 5 ; i ++ )
cin >> array [i];
num = sizeof(array)/sizeof(array[0]);
for ( int x = 0 ; x < num ; x ++)
cout << array[x] << endl;
1 ответ
Ваш массив имеет размер 0.
int array[] = {};
Это инициализирует массив размером 0. Это то же самое, что и выполнение
int array[0];
Подобные массивы не могут увеличиваться или уменьшаться, поэтому они не могут изменять свой размер. То, что вы, вероятно, хотите сделать, это
int array[5];
что дает ему размер
Обратите внимание, что они действительно не могут изменить размер. Вы делаете его размером 0, он остается размером 0, независимо от того, что вы делаете после этого. В моем предложенном исправлении его размер 5, и он останется размером 5, вы не можете изменить его размер.
Кстати, запись в ячейки 0-5 в массиве с размером 0, как вы делаете, не подходит, так как у массива нет такого индекса. Неопределенное поведение для доступа к позициям за пределами этого массива.