簡體   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