char **s = &"Is this valid?";
獲取允許在C中存儲字符串文字的地址的地址嗎? 我知道字符串文字存儲在.rodata數據段中。但是,獲取該地址的地址是沒有意義的。在C中尋址字符串文字的地址
應該指出,gcc編譯這個併產生一個工作的可執行文件。
char **s = &"Is this valid?";
獲取允許在C中存儲字符串文字的地址的地址嗎? 我知道字符串文字存儲在.rodata數據段中。但是,獲取該地址的地址是沒有意義的。在C中尋址字符串文字的地址
應該指出,gcc編譯這個併產生一個工作的可執行文件。
你舉的例子是無效的:
char **s = &"Is this valid?"; // Not valid, wrong type
這是有效的:
char (*s)[15] = &"Is this valid?"; // OK
類型的"Is this valid?"
是char[15]
。指向char
的數組15的指針的類型是char (*)[15]
。所以&"Is this valid?"
的類型是char (*)[15]
。
字符串文字的類型是char[N+1]
其中N
是字符串的長度。
&"Is this valid?"
的類型是char (*)[15]
(即指向長度爲15的數組char
的指針)。
您的代碼無效,因爲GCC會告訴您是否使用-Wall
進行編譯。
它不與'-Wall -Werror'。 – 2012-03-31 19:22:36