Скобка инициализации в массивах с ++ - PullRequest
0 голосов
/ 11 октября 2019

Я хочу знать, как инициализировать значения для некоторых элементов массива, таких как.

int arr[5]={3,5,6};

таким образом, что индекс 3 равен 0, а 5 равен 2.
Таким образом, индекс 1 пропускается и автоматически присваивается значение компилятором!

Спасибо за помощь!

Ответы [ 2 ]

5 голосов
/ 11 октября 2019

таким образом, что индекс 3 равен 0, а 5 равен 2.

Это будет

int arr[5] = {3,0,5,6};

Таким образом, индекс 1 пропускаетсяи автоматически назначаемое значение компилятором!

Вы не можете пропустить элементы в середине, только в конце, как в вашем

int arr[5] = {3,5,6};

, где отсутствующие элементы в конце инициализируются с 0.

Обратите внимание, что то, что вы хотите, возможно в C. Пример из cppreference :

int n[5] = {[4]=5,[0]=1,2,3,4} // holds 1,2,3,4,5

Однако это (пока?) Невозможно в стандартном C ++.

PS : Если вы не заботитесь о переносимости (на самом деле вы должны), вы можете изучить руководство по компилятору, чтобы узнать, позволяет ли оно инициализацию в стиле c также в C ++.

0 голосов
/ 11 октября 2019

Я хочу знать, как инициализировать значения для некоторых элементов массива ... Итак, индекс 1 пропущен

Это невозможно. Можно только инициализировать элементы по порядку;они не могут быть пропущены. То, что вы можете сделать, это инициализировать массив нулем и назначить некоторые элементы позже. Пример:

int arr[5]{};
arr[0] = 3;
arr[2] = 5;

или вместо этого можно использовать инициализацию по умолчанию:

int arr[5];
arr[0] = 3;
arr[2] = 5;

В этом случае элементы будут иметь неопределенные значения до назначения. Никогда не читайте неопределенные значения;Это бесполезно и обычно приводит к неопределенному поведению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...