Подтвердить что ты не робот

Нулевой массив в коде C

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

Как я могу обнулить известный размер массива без использования цикла for или любого другого?

Например:

arr[20] = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

Это длинный путь... Мне нужен короткий путь.

4b9b3361

Ответ 1

int arr[20] = {0};

C99 [$6.7.8/21]

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


Ответ 2

int arr[20];
memset(arr, 0, sizeof arr);

См. ссылку для memset

Ответ 3

Примечание. Вы можете использовать memset с любым символом.

Пример:

int arr[20];
memset(arr, 'A', sizeof(arr));

Также может быть частично заполнен

int arr[20];
memset(&arr[5], 0, 10);

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

int arr[20];
memset(arr, 0, 200);

Он будет работать (под окнами) и нулевой памятью после вашего массива. Это может привести к повреждению других значений переменных.

Ответ 4

man bzero

NAME
   bzero - write zero-valued bytes

SYNOPSIS
   #include <strings.h>

   void bzero(void *s, size_t n);

DESCRIPTION
   The  bzero()  function sets the first n bytes of the byte area starting
   at s to zero (bytes containing '\0').

Ответ 5

Использование memset:

int something[20];
memset(something, 0, 20 * sizeof(int));

Ответ 6

int arr[20] = {0} будет проще всего, если это нужно сделать только один раз.