我将一个数组传递给函数并尝试查找该数组的长度。但结果却出乎意料。有人可以解释一下吗?
int main()
{
int array[10]={0};
func(array);
return 0;
}
void func(int arr[])
{
printf("length of an array is %d ",(sizeof(arr)/sizeof(arr[0]));
}
它给出了答案2。
当我在 main 函数中尝试相同的操作时,它工作正常(答案是 10)。
//在linux中使用gcc编译器
在我看来,结果是因为sizeof(arr) == 8
(PC 上指针的大小)和sizeof(arr[0]) == 4
因为它是一个整数因此8/4==2
.
本声明:void func(int arr[])
告诉函数期望指向 int 的指针作为论证。
我不清楚是否可以计算sizeof
通过引用的数组。C
接受数组引用作为参数的函数总是倾向于接收它们的长度作为参数。
与的区别main()
函数是里面的main
array
变量的类型int[10]
, thus sizeof
能够获取其长度(以字节为单位)。在func
, arr
属于类型int*
so sizeof
仅给出指针的长度(以字节为单位)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)