[英]what happens when you dereference a string in c++
為什么以下代碼產生輸出“ h”? 我不明白。 由於它正在取消引用,因此它不應該打印出其內存地址嗎?
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
cout << *("hello");
return 0;
}
“ hello”的計算結果是指向字符串第一個字符的指針,對它的解引用將對該字符串的結果進行賦值。
字符串文字(在這種情況下為"hello"
)是大小為N
的const char
數組,其中N
是字符數加上空終止符。 該數組可以衰減為指向第一個元素的指針。 現在,當取消引用該指針時,您將擁有數組的第一個元素,即一個字符。 這就是為什么在給cout
字符時打印h
原因。
該字符串保存在二進制文件中的某個存儲位置(在編譯源代碼時)。
像"hello"
這樣的字符串將轉換為char *
(指向char的指針)。 因此,當您取消引用它時,它將獲得“字符串”的第一個字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.