# V1009. Check the array initialization. Only the first element is initialized explicitly.

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

Рассмотрим пример подозрительного кода:

    int arr[3] = {1};

Возможно, программист ожидал, что 'arr' будет состоять из одних единиц, но это не так. Массив будет состоять из значений 1, 0, 0.

Корректный код:

    int arr[3] = {1, 1, 1};

Подобная путаница может произойти из-за схожести с конструкцией "arr = {0}", которая инициализирует весь массив нулями.

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

Также не рекомендуется пренебрегать наглядностью кода.

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

    int White[3] = { 0xff, 0xff, 0xff };
    int Black[3] = { 0x00 };
    int Green[3] = { 0x00, 0xff };

Благодаря неявной инициализации, все цвета заданы правильно, но лучше переписать код более наглядно:

    int White[3] = { 0xff, 0xff, 0xff };
    int Black[3] = { 0x00, 0x00, 0x00 };
    int Green[3] = { 0x00, 0xff, 0x00 };

Данная диагностика классифицируется как:

CWE-665

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V1009.