Ghi chú C ++: Khởi tạo mảng có một danh sách đẹp về khởi tạo mảng. tôi có một
int array[100] = {-1};
hy vọng nó sẽ đầy với -1 nhưng không, chỉ có giá trị đầu tiên và phần còn lại là 0 với các giá trị ngẫu nhiên.
Mật mã
int array[100] = {0};
chỉ hoạt động tốt và đặt từng phần tử thành 0.
Tôi đang thiếu gì ở đây .. Không ai có thể khởi tạo nó nếu giá trị bằng 0?
Và 2: Việc khởi tạo mặc định (như trên) có nhanh hơn vòng lặp thông thường trong toàn bộ mảng và gán một giá trị hay nó có làm điều tương tự không?
{0}
không phải là trường hợp đặc biệt cho cấu trúc cũng như mảng. Quy tắc là các phần tử không có trình khởi tạo được khởi tạo như thể chúng có 0
cho trình khởi tạo. Nếu có các tập hợp lồng nhau (ví dụ struct x array[100]
) thì bộ khởi tạo được áp dụng cho các tập hợp không theo thứ tự "hàng chính"; niềng răng tùy ý có thể được bỏ qua làm điều này. struct x array[100] = { 0 }
có giá trị bằng C; và hợp lệ trong C ++ miễn là thành viên đầu tiên struct X
chấp nhận 0
làm trình khởi tạo.
{ 0 }
không đặc biệt ở C, nhưng việc xác định kiểu dữ liệu không thể khởi tạo với nó khó hơn nhiều vì không có hàm tạo và do đó không có cách nào để không 0
bị chuyển đổi và gán cho một thứ gì đó .