繁体   English   中英

C ++空数组大小

[英]C++ empty array size

我用三种不同的方式(在堆上或在堆栈上)初始化了一个数组,但与我的预期相反,它们的大小似乎有两个不同的值。 我不明白为什么。

int asd[0];    
sizeof(asd);   //ouput 0;   

int asd={};
sizeof(asd);    //output 4;

int *asd=new int[0];
sizeof(asd);    //output 4;

由于数组名称是指向已分配存储块的指针,并且指针的大小为4,因此我认为输出2和3是正确的。

但是我不明白的是为什么输出1没有显示大小4。

您的最后两个示例不是数组;

第一个是: int asd[0]定义了一个大小为0的数组,这是不允许的。

如果表达式是一个常量表达式,则其值应大于零。

第二个: int asd={}; 使用汇总初始化int int 4字节的大小。

第三个: int *asd=new int[0]; int类型的指针,指向动态分配的内存。 指针的大小为4 bytes (2 ^ 32个地址)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM