Слишком много значений инициализатора; Инициализация динамически распределенных массивов? - PullRequest
0 голосов
/ 18 января 2020

Недавно, переходя на C ++, я динамически выделил пространство для массива и попытался инициализировать его с помощью 8 значений по умолчанию в следующей строке.

int* intArray = new int[8];
intArray = {1, 2, 3, 4, 5, 6, 7, 8};

Visual Studio это не понравилось, и подчеркнул 2 красным, как будто там есть проблема, только чтобы дать мне ошибку "слишком много значений инициализатора"

Я не знаю, использовал ли я неверный синтаксис или если вам просто не разрешено устанавливать значение массива таким образом после объявления. Любые идеи?

Ладно, похоже, это также не работает для обычных массивов без указателей, я просто должен делать что-то глупое.

1 Ответ

1 голос
/ 18 января 2020

intArray это не массив, это указатель. Указатель не может быть инициализирован с помощью списка инициализаторов.

Dynami c выделенная память может быть инициализирована в момент выделения:

int* intArray = new int[8] {1, 2, 3, 4, 5, 6, 7, 8};

C массив также может быть инициализирован при декларации:

int intArray[8] = {1, 2, 3, 4, 5, 6, 7, 8};
...