【发布时间】:2011-02-26 09:05:01
【问题描述】:
完整示例:
#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;
}
在将它传递给函数之前, sizeof 给了我正确的值。对函数中完全相同的数组执行完全相同的操作会产生奇怪的结果。少了一个元素。为什么?
【问题讨论】: