Trừ khi giá trị đó là 0 (trong trường hợp đó bạn có thể bỏ qua một phần của trình khởi tạo và các phần tử tương ứng sẽ được khởi tạo thành 0), không có cách nào dễ dàng.
Đừng bỏ qua giải pháp rõ ràng:
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
Các phần tử có giá trị bị thiếu sẽ được khởi tạo thành 0:
int myArray[10] = { 1, 2 }; // initialize to 1,2,0,0,0...
Vì vậy, điều này sẽ khởi tạo tất cả các yếu tố thành 0:
int myArray[10] = { 0 }; // all elements 0
Trong C ++, một danh sách khởi tạo trống cũng sẽ khởi tạo mọi phần tử thành 0. Điều này không được phép với C:
int myArray[10] = {}; // all elements 0 in C++
Hãy nhớ rằng các đối tượng có thời lượng lưu trữ tĩnh sẽ khởi tạo thành 0 nếu không có trình khởi tạo nào được chỉ định:
static int myArray[10]; // all elements 0
Và "0" không nhất thiết có nghĩa là "all-bits-zero", vì vậy sử dụng cách trên là tốt hơn và dễ mang theo hơn bộ nhớ (). (Giá trị điểm nổi sẽ được khởi tạo thành +0, con trỏ thành giá trị null, v.v.)
enum { HYDROGEN = 1, HELIUM = 2, CARBON = 6, NEON = 10, … };
vàstruct element { char name[15]; char symbol[3]; } elements[] = { [NEON] = { "Neon", "Ne" }, [HELIUM] = { "Helium", "He" }, [HYDROGEN] = { "Hydrogen", "H" }, [CARBON] = { "Carbon", "C" }, … };
. Nếu bạn loại bỏ dấu chấm lửng…
, các đoạn đó sẽ biên dịch theo C99 hoặc C11.