Pet*_*ter 3 c++ arrays dynamic
基本的伪代码如下所示:
void myFunction()
{
int size = 10;
int * MyArray;
MyArray = new int[size];
cout << size << endl;
cout << sizeof(MyArray) << endl;
}
Run Code Online (Sandbox Code Playgroud)
第一个cout按预期返回10,而第二个cout返回4.
有人有解释吗?
MyArray 只是一个指针,在您的系统上,其大小为四个字节.
动态创建阵列时,需要自己跟踪大小.
如果您创建了自动数组或静态数组,
int MyArray[10];
Run Code Online (Sandbox Code Playgroud)
然后sizeof(MyArray)将是40.一旦数组衰减到指针,例如,当您将其传递给函数时,大小信息将丢失.