C++数组大小

Sha*_*med 6 c++ arrays sizeof

可能重复:
作为参数传递的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)