Инициализировать многомерный массив C с 0 элементами - PullRequest
2 голосов
/ 08 февраля 2011

Как я могу просто инициализировать многомерный массив C с 0 элементами, как это:

int a[2][2] = { { 0, 0 }, {0, 0} }

Ответы [ 6 ]

5 голосов
/ 08 февраля 2011

Это должно работать:

int a[2][2] = {0};

РЕДАКТИРОВАТЬ Этот прием может помочь отключить предупреждение:

int a[2][2] = {{0}};
5 голосов
/ 08 февраля 2011

Использовать memset:

memset(a,0,sizeof a);
0 голосов
/ 08 февраля 2011

Просто: добавьте точку с запятой в конце:

int a[2][2] = { { 0, 0 }, {0, 0} };

И, если все инициализаторы действительно равны нулю, а массив не является локальным, вы можете вообще не указывать инициализатор, потому что 0 по умолчанию:

int a[2][2];

Люди предлагают вызывать memset или bzero, но они не имеют отношения к данному вопросу.

0 голосов
/ 08 февраля 2011

Используйте bzero, чтобы обнулить его (быстрее чем memset):

bzero(a, sizeof(a));
0 голосов
/ 08 февраля 2011

Либо используйте memset(), либо сделайте его статическим и просто «лениво-инициализируйте» ноль:

static int a[2][2];

Переменные со статическим классом хранения всегда инициализируются, как если бы все их поля были установлены в 0.

0 голосов
/ 08 февраля 2011
memset(a, 0, sizeof(a))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...