c++ - 在不同的情况下对 sizeof(arr) 得到不同的答案?;

标签 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;
}

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

最佳答案

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

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

关于c++ - 在不同的情况下对 sizeof(arr) 得到不同的答案?;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41378648/

相关文章:

C++ int 与 long

函数调用运算符的 C++ 模板

tomcat - 强制使用 SSL 的 ARR 代理到 tomcat

iis - 使用 IIS Url Rewrite 2.0 和 ARR 重写自定义标记属性

iis - 使用 IIS 将子目录的 URL 重写到不同的域

c++ - ffmpeg AVFrame 获取完整的解码数据到 char*

c++ - 如何从C++调用Delphi DLL WideString参数(包括var参数)

c - 大小();返回嵌入式 C 中指定数组的值的两倍

c - my_sizeof 宏不适用于枚举数据类型

c - C中动态数组的大小不会改变