簡體   English   中英

為什么我可以獲取字符串文字的地址,而不是整數文字的地址?

[英]Why can I take the address of a string literal, but not of an integer literal?

我只是偶然發現了以下代碼行

cout << &"Blahh" << endl;

編譯器不會給出錯誤,並且在控制台上顯示地址。 它正常工作沒有任何問題。 如果我用int替換“Blahh”,那么

cout << &10 << endl;

代碼不會編譯。 簡而言之:字符串文字可以工作,但不是整數文字。

是什么原因導致cout << &"Blahh" << endl; 作品和cout << &10 << endl; 不?

諸如"Blahh"之類的字符串文字是const char[6]類型,因此在地址空間中分配了它的內存。 整數文字常量10沒有分配給它的特定內存位置,因此無法獲取其地址(順便說一句,想象一下如果你可以在程序中更改常量10的值)。

因為"Blahh"在內存中有一個地址(它是一個l值)。 10不是(它是一個r值)。

http://en.wikipedia.org/wiki/Value_%28computer_science%29

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM