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