[英]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.