#include<stdio.h>
void length(int arr[])
{
int len=sizeof(arr)/sizeof(arr[0]);
printf("%d",len);
}
main()
{
int arr[]={4,5,6,3,21,9,3,8};
length(arr);
}
在此代码中,答案始终为2。我无法理解为什么。是否必须始终发送大小。
在C语言中,您不能将整个数组传递给被调用的函数,因为在那种情况下,它可能会占用巨大的堆栈空间,因为据我所知,传递给函数的参数存储在堆栈中。
因此,当您尝试将数组传递给函数时,由于数组存储在连续的内存位置中,因此数组名称会衰减为指向数组第一个元素的指针,因此您只需要知道第一个元素的地址即可。
正如@John Zwinck所指出的那样,始终获得输出的确切原因2
可能是因为您在64-bit
系统上。
在64位系统/编译器上,指针的大小为8 bytes
(仅是因为系统可以访问2^64
地址,因此需要8个字节来存储它们),并且大小为int
is 4 bytes
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句