在不同的场景中获得sizeof(arr)的不同答案?;

时间:2016-12-29 11:18:19

标签: c++ sizeof arr

考虑这两个程序:

//////////////////////节目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;
}

////////////

1 个答案:

答案 0 :(得分:1)

一旦传递给arr

print已将衰减指针类型。因此,该函数中的sizeof会产生指向您平台上int的指针的大小。

在程序2中,没有发生衰减:arr的类型是3 int s的数组。大小为sizeof(int) * 3