Якщо це значення не дорівнює 0 (у цьому випадку ви можете опустити частину ініціалізатора, а відповідні елементи будуть ініціалізовані до 0), немає простого способу.
Однак не забувайте про очевидне рішення:
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
Елементи з відсутніми значеннями ініціалізуються до 0:
int myArray[10] = { 1, 2 }; // initialize to 1,2,0,0,0...
Таким чином, це ініціалізує всі елементи до 0:
int myArray[10] = { 0 }; // all elements 0
У C ++ порожній список ініціалізації також ініціалізує кожен елемент до 0. Це не заборонено із C:
int myArray[10] = {}; // all elements 0 in C++
Пам'ятайте, що об'єкти зі статичною тривалістю зберігання ініціалізуються до 0, якщо не вказано ініціалізатор:
static int myArray[10]; // all elements 0
І що "0" не обов'язково означає "all-bits-zero", тому використання вищевказаного є кращим і портативнішим, ніж memset (). (Значення з плаваючою комою будуть ініціалізовані до +0, покажчики на нульове значення тощо)
enum { HYDROGEN = 1, HELIUM = 2, CARBON = 6, NEON = 10, … };
іstruct element { char name[15]; char symbol[3]; } elements[] = { [NEON] = { "Neon", "Ne" }, [HELIUM] = { "Helium", "He" }, [HYDROGEN] = { "Hydrogen", "H" }, [CARBON] = { "Carbon", "C" }, … };
. Якщо ви вилучите еліпсис…
, ці фрагменти збираються під C99 або C11.