【发布时间】:2020-08-01 10:49:00
【问题描述】:
我创建了一个由十个整数组成的数组并打印它的大小 1.主要 2. 在名为 print 的函数中
#include <iostream>
using namespace std;
void print(int *a)
{
cout<<sizeof(a);
}
int main()
{
int arr[10];
cout<<sizeof(arr)<<endl;
print(arr);
}
输出是:
40
8
我期望在这两种情况下都是 40(作为 1 整数的大小=4 乘以 10 ),但第二种情况显示的是单个指针的大小,而不是整个数组的大小。这里发生了什么?
【问题讨论】:
-
sizeof(a)是sizeof(int*)始终不变 -
@UnholySheep 如何在 main 中产生 40,我也应该将 sizeof(a) 的大小设置为 sizeof(int*)
-
数组可以衰减为指针,但它们不是指针。
-
@BessieTheCow 经过这么多天,现在我明白你的意思了。 :)
标签: c++ pointers pass-by-reference implicit-conversion pass-by-value