正如Johannes Schaub所说here,sizeof操作数在运行时评估具有可变大小的数组的大小,但是......如何?存储的大小在哪里?为什么它不返回指针类型的大小?
示例代码:
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
int array[argc];
cout << sizeof array << endl;
return 0;
}
答案 0 :(得分:2)
如何?存储的大小在哪里?
实施决定存储它的地方。可能在帧内的堆栈上与其他局部变量,或者它可能只存在于寄存器中。
为什么它不返回指针类型的大小?
sizeof
仅在将指针类型应用于指针类型或具有指针类型的对象时才返回指针类型的大小。 array
没有指针类型,因此没有理由返回这样的大小。
P.S。标准C ++中不存在VLA。