问题:自定义函数计算数组长度,每次都是8?
int arrayLength(int arr[]) { return sizeof(arr) ; }
或者函数int arrayLength(int * arr) { return sizeof(arr) ; }
解决:在c中,数组在作为参数的时候就退化为指针,对一个地址来取大小呢,如果是32位系统的话即为4,如果是64位系统的话为8,所以呢,在函数中sizeof获取的是指针的长度而不是数组的长度。
目前看,不要在自定义函数中使用sizeof。
或者可以 #define length sizeof(arr)
函数中需要使用到sizeof(arr)的地方,用宏定义变量代替,这样就不用传递数组了,测试计算长度是准确的,不知道有没有未知的问题。
转载:自定义函数中使用sizeof计算数组长度为啥就不正确了?自定义函数中使用sizeof计算数组长度为啥就不正确了?_sizeof数组不正确_一桶凡士林的博客-CSDN博客