Что означает объявление BufferData Data [16] = {0} - PullRequest
0 голосов
/ 04 июня 2018

Я прошёл C dll и натолкнулся на структуру

BufferData{int Len; int Ant; unsigned char Data[512]}

Затем структура инициализируется созданием массива

BufferData Data[16] = {0}

Я не уверен, что это делает, учитывая, чтоДанные - это массив структур.

1 Ответ

0 голосов
/ 04 июня 2018

Это причуда инициализаторов Си.C не имеет «наполовину инициализированных» переменных;переменная либо неинициализирована, либо полностью инициализирована.

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

Таким образом, {0}универсальный инициализатор: он устанавливает первое поле (независимо от того, что это может быть) на 0, а все остальные поля (если таковые имеются) также автоматически устанавливаются на 0.

В вашем случае первое полепервый член первого элемента Data, то есть мы явно устанавливаем Data[0].Len и полагаемся на нулевую инициализацию для всего остального.

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