可能重复:
作为参数传递的Sizeof数组
我在c ++中使用这个sizeof运算符是愚蠢的,你知道为什么它是4和12吗?
void function (int arg[]) {
cout<<sizeof(arg)<<endl; // 4
}
int main ()
{
int array[] = {1, 2, 3};
cout<<sizeof array<<endl; // 12
function (array);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Set*_*gie 23
在main,名称array是一个数组,所以你得到数组的字节大小sizeof.但是,数组在传递给函数时会衰减到指针,因此您可以sizeof(int*)进入函数内部.
请注意,以参数的形式T arg[]是完全相同一样走的是自变量T* arg.所以你的功能完全等同于
void function(int* arg) {
cout << sizeof(arg) << endl;
}
Run Code Online (Sandbox Code Playgroud)