为什么在 C++ 中没有定义 n 的 sizeof (array A[n]) 是固定的?

当我尝试找到 sizeof(A) 其中 A 的类型为 int 且大小为 'n' 时,n 是一个未定义的 int。我得到 496 的输出,当我给 n 一个值然后检查它时,sizeof(A) 给我的值与 496 相同。我知道 Array 是一种静态数据类型,因此无论“n”如何,它都会有内存谁能解释一下 496 的值是从哪里来的?

int main()
{
    int n;
    int A[n];
    
    cout<<sizeof(A)<<"\n";
    
    cin>>n;
    
    cout<<sizeof(A);
    return 0;
}

回答

int n;
int A[n];

A 的类型不是“int with size as 'n'”。A 的类型是 int[n],它是 n 个整数的数组。但是,由于 n 不是编译时常量,因此程序格式错误。如果我们不考虑这种畸形, 的值 n是不确定的。读取不确定的值会导致未定义的行为。

它来自未定义的行为。您可以通过阅读产生该结果的已编译程序的程序集来找到更多详细信息。


以上是为什么在 C++ 中没有定义 n 的 sizeof (array A[n]) 是固定的?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>