Если это значение не равно 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» не обязательно означает «все биты-ноль», поэтому использование вышеупомянутого лучше и более переносимо, чем 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.