Да, вы можете объявить массив, а затем инициализировать его.
Однако здесь есть исключение.
Вы объявляете массив указателей символов (который работал нормально).
И затем вы создаете экземпляры константных строк, чтобы назначить их массиву .
Вот тут и начинается проблема.
Константные строки - это просто примитивы компилятора, которые не получают адресной памяти в том виде, в каком вы их использовали. Они могут быть назначены прямо во время инициализации массива (как показало Mike
); это даст указание компилятору выделить их как константы, доступные во время выполнения, и разрешить инициализацию при запуске области действия myArray
.
То, что вы попробовали, сработало бы хорошо
int numberArray[3];
// code here
numberArray[0] = 1;
numberArray[1] = 2;
numberArray[2] = 3;
Следует отметить, что указатель символа и экземпляр строки - это две разные сущности; первое может указывать на второе.