数组做形参会退化为指针
程序员文章站
2023-12-31 14:40:22
...
数组做形参会退化为指针
int swap(int arr[])
{
return sizeof(arr)/arr[0];
}
int main(int argc,char **argv)
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int len = sizeof(arr) / arr[0];
/**
* 此处可以得知 len = 10;
* 因为arr为数组类型,sizeof函数求的是数组占用空间长度
*/
int lenOfSwap = swap(arr);
/**
* 此时,如果32位平台编译,lenOfSwap = 1;
* 因为,arr此时退化为了指针
* 指针,在32位时大小固定为4字节
* 即使, int swap(arr[100]) 此时lenOfSwap还是1,因为arr本质只是一个指针
*/
}
推荐阅读