【发布时间】:2013-07-04 13:11:59
【问题描述】:
我写了一个函数size,它接受整数数组作为参数。
int length(int a[])
{
return sizeof(a)/sizeof(int);
}
int main()
{
int a[] = {1,3,5,6,9,4,2,1,0,0};
int len = sizeof(a)/sizeof(int);
cout << len; // This correctly prints 10 .
len = size(a);
cout << len; // But this print 2 .why ??
return 0;
}
有人可以解释一下这种行为吗? 谢谢。
【问题讨论】:
-
int length(int a[])与int length(int* a)相同。请勿使用该符号,因为如您所见,它具有误导性。 -
@0x499602D2 正好相反。它的大小是 int 的两倍
-
@0x499602D2 64 位指针。
-
@GrijeshChauhan 不一定。很可能是具有 64 位指针、32 位 int 的 64 位系统。或者可能是 60 位指针、30 位整数、10 位字符。你可以只告诉比率指针/int,没有别的