讀source code of Redis:char指針與char數組不一樣?
struct sdshdr {
int len;
int free;
char buf[];
};
我發現char buf[]
無法char *buf
被取代,在這個意義上,char* buf
將增加結構的大小。
但我不明白爲什麼,有人會對此有所瞭解?
編輯:我用gcc 4.6.3測試它在我的Ubuntu x86_64的(3.2.0-23-通用)是這樣的:
的printf(「sdshdr LEN =% zu \ n「,sizeof(struct sdshdr));
char buf[]
隨着它輸出sdshdr len = 8
和sdshdr len = 16
與char *buf
。
'字符* buf'不會增加結構的大小。 – moeCake
是的,請參閱我更新的問題。 @moeCake – adamsmith
[%zu是size_t的正確格式說明符](http://stackoverflow.com/questions/940087/whats-the-correct-way-to-use-printf-to-print-a-size-t )這是'sizeof'返回的內容。 –