Нулевой массив в коде 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;
Это длинный путь... Мне нужен короткий путь.
Ответы
Ответ 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}
будет проще всего, если это нужно сделать только один раз.