考虑这两个程序:
//////////////////////节目1 ////////////
void print(int arr[])
{
int *p=arr;
cout<< sizeof(arr)<<endl; //// here it is 8
}
int main()
{
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
print(arr);
return 0;
}
///////////////////////////// ///////////////////纲要2 ///////////
#include <stdio.h>
int main()
{
int arr[] = {10, 20, 30};
printf("%ld \n",sizeof(arr)); /// here it is 12
return 0;
}
////////////
答案 0 :(得分:1)
arr
, print
已将衰减指针类型。因此,该函数中的sizeof
会产生指向您平台上int
的指针的大小。
在程序2中,没有发生衰减:arr
的类型是3 int
s的数组。大小为sizeof(int) * 3
。