Hoàn dụ:Tại sao một C-Array có giá trị sizeof() sai khi nó được truyền cho một hàm?
#include <stdio.h>
void test(int arr[]) {
int arrSize = (int)(sizeof(arr)/sizeof(arr[0]));
printf("%d\n", arrSize); // 2 (wrong?!)
}
int main (int argc, const char * argv[]) {
int point[3] = {50, 30, 12};
int arrSize = (int)(sizeof(point)/sizeof(point[0]));
printf("%d\n", arrSize); // 3 (correct :-))
test(point);
return 0;
}
Trước khi đi qua nó để một chức năng, sizeof mang lại cho tôi những giá trị đúng. Làm chính xác điều tương tự trên cùng một mảng trong hàm cho kết quả lạ. Có một yếu tố bị thiếu. Tại sao?
Để trở thành cầu kỳ: Nó là con trỏ đến phần tử thứ nhất của mảng được chuyển. Cùng một giá trị, nhưng loại khác nhau. – alk