数组传参问题,为什么结果是2

img

sizeof(a)/sizeof(a[0]) 可以获取数组的长度,原理是 sizeof(a) 代表整个数组的大小,sizeof(a[0]) 代表数组中第一个元素的大小,而数组中的每个元素大小都是相同的,所以最后的计算结果就是数组的长度。
但是作为getdata() 的参数传入后 不同了 。
因为作为参数传递时,变量的本质是一个指针 ,win32 项目,指针大小为 4,如果编译成 64 位的话指针大小就是 8,你应该是64位,8/4=2所以结果会有出入

因为你以为传了个数组,其实只是传了个指针。2是因为int*的长度是机器字长,在64bit机器上值是8。int长度是4,所以得到2

数组长度值,只能依靠形参传入函数内。

因为函数内传入的arr实际上是个指针,64位下指针为8位,int占4位,所以计算结果为2
有帮助望采纳