【发布时间】:2021-11-23 14:02:45
【问题描述】:
我不是C++新手,但是今天发现数组的大小在main函数和其他函数中是不一样的。这是为什么?我想这与指针有关。
#include<bits/stdc++.h>
using namespace std;
void func(int arr[]){
cout<<"func size: "<<sizeof(arr)<<"\n";
}
int main(){
int arr[5];
cout<<sizeof(arr)<<"\n";
func(arr);
return 0;
}
您可以测试此代码以查看差异。
【问题讨论】:
-
它被称为array to pointer decay。将数组传递给函数时,大小信息会丢失。这就是为什么许多作用于数组的 C 函数需要一个数组参数和一个大小参数,以及为什么在 C++ 中更喜欢使用像
std::array这样提供值语义的类。 -
好的,谢谢!这就解释了一切。