在不同的情况下对 sizeof(arr) 得到不同的答案?;
getting different answer for sizeof(arr) in different scenario?;
考虑这两个程序:
/////////////////////程序 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;
}
////////////
arr
在传递给 print
后 已衰减 为指针类型。因此,该函数中的 sizeof
会产生指向您平台上 int
的指针的大小。
在程序 2 中,没有发生衰减:arr
的类型是 3 int
的数组。大小是sizeof(int) * 3
.
考虑这两个程序:
/////////////////////程序 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;
}
////////////
arr
在传递给 print
后 已衰减 为指针类型。因此,该函数中的 sizeof
会产生指向您平台上 int
的指针的大小。
在程序 2 中,没有发生衰减:arr
的类型是 3 int
的数组。大小是sizeof(int) * 3
.