原因:
C语言在传输数组的时候,实际上传输的是指针。如下图:
//a[10]={0,1,2,3,4,5,6,7,8,9}
int Num(int a[]){
return sizeof(a);
}
传输给Num函数的并不是一个a数组,而是一个a指针。
此时返回值并不是预想的数组的长度10,而是一个指针的长度(由操作系统的不同决定:32位操作系统是4,64位操作系统位8)
解决方法:
可以通过如下图所示:
#define ArrLengh(arr) sizeof(arr)/sizeof(arr[0])
这样的宏定义直接在所需要的位置取长度