Как инициализировать массив к чему-то в C без цикла? - PullRequest
8 голосов
/ 23 мая 2010

Допустим, у меня есть массив, подобный

int arr[10][10];

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

Ответы [ 6 ]

14 голосов
/ 23 мая 2010

Быстрое решение:

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

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

6 голосов
/ 23 мая 2010

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

4 голосов
/ 23 мая 2010

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

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

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

4 голосов
/ 23 мая 2010
int arr[10][10] = {0}; // only in the case of 0
1 голос
/ 23 мая 2010
int myArray[2][2] = {};

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

0 голосов
/ 23 мая 2010

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

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