Вы используете оператор ==
вместо оператора =
.На практике вместо присвоения NULL
cxs[i]
(что и было бы, если бы вы использовали оператор присваивания =
), вы сравниваете каждый элемент с NULL
и отбрасываете результат такого сравнения, таким образом, предупреждениевашего компилятора.
Обратите внимание, что вы можете проще инициализировать свой массив, используя нотацию
struct mystructure * cxs[MAXNOCXS] = {};
Этот синтаксис сообщает компилятору инициализировать по умолчанию 1 всеэлементы массива (так как фигурные скобки, которые будут содержать явные инициализаторы, пусты), это означает, что указатели инициализируются в NULL
, а арифметические типы равны 0.
Если ваш массив имеет «статическую длительность хранения»(т.е. это глобальная или static
переменная), вам не нужно делать ничего особенного, потому что она уже инициализирована по умолчанию.
- К значению, к которому они были бы инициализированы, если бы они были
static
переменными (C99, §6.7.8 ¶10, ¶21).
Редактировать
После прочтения кажется, что стандарт C, в отличие от стандарта C ++, не поддерживает пустые инициализаторы.Тем не менее, вы всегда можете сделать:
struct mystructure * cxs[MAXNOCXS] = {NULL};
, который будет инициализировать первый элемент с NULL
, и позволить другим элементам инициализироваться по умолчанию (снова на NULL
).