【问题标题】:getting different answer for sizeof(arr) in different scenario?; [duplicate]在不同的情况下对 sizeof(arr) 得到不同的答案? [复制]
【发布时间】:2016-12-29 11:18:18
【问题描述】:

考虑这两个程序:

///////////////////程序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;
}

///////////

【问题讨论】:

    标签: c++ sizeof arr


    【解决方案1】:

    arr 在传递给print衰减为指针类型。因此,该函数中的sizeof 会产生指向您平台上int 的指针的大小。

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

    【讨论】:

      猜你喜欢
      • 2021-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      相关资源
      最近更新 更多