Có sự khác biệt nào trong tuyên bố sau đây không? int func(int arr[]); int func(int arr[20]);
Trả lời:
Đáp án đúng: A
Trong C/C++, khi bạn khai báo một tham số mảng cho một hàm, kích thước mảng không thực sự quan trọng trong khai báo. Trình biên dịch chỉ quan tâm đến việc bạn đang truyền một con trỏ đến phần tử đầu tiên của mảng. Do đó, int func(int arr[]);
và int func(int arr[20]);
hoàn toàn tương đương nhau. Cả hai đều biểu thị một hàm nhận một con trỏ kiểu int*
làm tham số. Số 20 trong khai báo thứ hai chỉ mang tính gợi ý hoặc thông tin cho người đọc mã, chứ không ảnh hưởng đến cách trình biên dịch xử lý tham số này.