Bu değer 0 olmadığı sürece (bu durumda başlatıcı parçasının bir kısmını atlayabilirsiniz ve karşılık gelen öğeler 0 olarak başlatılır), kolay bir yol yoktur.
Bununla birlikte, bariz çözümü göz ardı etmeyin:
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
Eksik değerleri olan öğeler 0 olarak başlatılır:
int myArray[10] = { 1, 2 }; // initialize to 1,2,0,0,0...
Böylece bu, tüm öğeleri 0 olarak başlatır:
int myArray[10] = { 0 }; // all elements 0
C ++ 'da, boş bir başlatma listesi her öğeyi 0 olarak başlatır. Buna C ile izin verilmez :
int myArray[10] = {}; // all elements 0 in C++
Başlatıcı belirtilmezse statik depolama süresine sahip nesnelerin 0 olarak başlayacağını unutmayın:
static int myArray[10]; // all elements 0
Ve bu "0" mutlaka "all-bit-zero" anlamına gelmez, bu nedenle yukarıdakileri kullanmak memset () 'den daha iyi ve daha taşınabilirdir. (Kayan nokta değerleri +0, işaretçiler boş değere vb. Olarak başlatılacaktır.)
enum { HYDROGEN = 1, HELIUM = 2, CARBON = 6, NEON = 10, … };
vestruct element { char name[15]; char symbol[3]; } elements[] = { [NEON] = { "Neon", "Ne" }, [HELIUM] = { "Helium", "He" }, [HYDROGEN] = { "Hydrogen", "H" }, [CARBON] = { "Carbon", "C" }, … };
. Üç nokta çıkarılırsa…
, bu parçalar C99 veya C11 altında derlenir.