Kecuali jika nilainya 0 (dalam hal ini Anda dapat menghilangkan beberapa bagian dari penginisialisasi dan elemen yang sesuai akan diinisialisasi ke 0), tidak ada cara mudah.
Namun, jangan mengabaikan solusi yang jelas:
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
Elemen dengan nilai yang hilang akan diinisialisasi ke 0:
int myArray[10] = { 1, 2 }; // initialize to 1,2,0,0,0...
Jadi ini akan menginisialisasi semua elemen ke 0:
int myArray[10] = { 0 }; // all elements 0
Di C ++, daftar inisialisasi kosong juga akan menginisialisasi setiap elemen ke 0. Ini tidak diizinkan dengan C:
int myArray[10] = {}; // all elements 0 in C++
Ingatlah bahwa objek dengan durasi penyimpanan statis akan diinisialisasi ke 0 jika tidak ada initializer yang ditentukan:
static int myArray[10]; // all elements 0
Dan "0" tidak berarti "semua-bit-nol", jadi menggunakan yang di atas lebih baik dan lebih portabel daripada memset (). (Nilai titik apung akan diinisialisasi ke +0, pointer ke nilai nol, dll.)
enum { HYDROGEN = 1, HELIUM = 2, CARBON = 6, NEON = 10, … };
danstruct element { char name[15]; char symbol[3]; } elements[] = { [NEON] = { "Neon", "Ne" }, [HELIUM] = { "Helium", "He" }, [HYDROGEN] = { "Hydrogen", "H" }, [CARBON] = { "Carbon", "C" }, … };
. Jika Anda menghapus elipsis…
, fragmen-fragmen itu mengkompilasi di bawah C99 atau C11.