Как инициализировать массив к чему-то в C без цикла?

Позволяет говорят, что у меня есть массив как

int arr[10][10];

Теперь я хочу инициализировать все элементы этого массива к 0. Как я могу сделать это без циклов или указывающий каждый элемент?

Обратите внимание на то, что этот вопрос, если для C

9
задан Laz 23 May 2010 в 09:22
поделиться

6 ответов

Быстрое и практичное решение:

int arr[10][10] = { 0 };

Если вы инициализируете любой элемент массива, C будет по умолчанию инициализировать любой элемент, который вы не укажете явно. Таким образом, приведенный выше код инициализирует первый элемент нулем, а C устанавливает все остальные элементы в ноль.

15
ответ дан 4 December 2019 в 07:13
поделиться
int arr[10][10] = {0}; // only in the case of 0
4
ответ дан 4 December 2019 в 07:13
поделиться

Помимо синтаксиса инициализации, вы всегда можете memset(arr, 0, sizeof(int)*10*10)

6
ответ дан 4 December 2019 в 07:13
поделиться

Вам повезло: с 0 это возможно.

memset(arr, 0, 10 * 10 * sizeof(int));

Вы не сможете сделать это с другим значением, отличным от 0, потому что memset работает с байтами, а не с intми. Но int, который весь 0 байт, всегда будет иметь значение 0.

4
ответ дан 4 December 2019 в 07:13
поделиться
int myArray[2][2] = {};

Вам даже не нужно явно записывать ноль.

2
ответ дан 4 December 2019 в 07:13
поделиться

int arr [10] [10] = {0};

0
ответ дан 4 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: