2011-01-04 62 views
7

VớiKhi khởi tạo mảng char, là khoảng trống còn lại không được lấp đầy hoặc chưa được khởi tạo?

char foo[1024] = "bar"; 

này sẽ khởi foo để chứa 'b', 'a', 'r', 0. 1020 ký tự còn lại chưa được khởi tạo hay chưa được khởi tạo?

Tôi nghĩ rằng phần trên giống với `char foo [1024] = {'b', 'a', 'r', '\ 0'}; và như với việc khởi tạo các tập hợp, bất kỳ thành viên nào không được đề cập được khởi tạo bằng không?

Trả lời

9

Nếu một mảng/tập hợp được khởi tạo bằng cách nào đó [chỉnh sửa: bằng cách sử dụng bộ khởi tạo tĩnh], các mục nhập không xác định còn lại là số không, có.

3

Có, các phần tử mảng chưa được khởi tạo sẽ là số không. Ví dụ:

Nếu nguồn cung cấp initializer quá ít yếu tố, 0 được giả định cho các phần tử mảng còn lại:

int v5[8] = { 1 , 2 , 3 , 4 }; 

tương đương với

int v5[] = { 1 , 2 , 3 , 4 , 0 , 0 , 0 , 0 }; 
Các vấn đề liên quan