簡體   English   中英

當您取消引用C ++中的字符串時會發生什么

[英]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" )是大小為Nconst char數組,其中N是字符數加上空終止符。 該數組可以衰減為指向第一個元素的指針。 現在,當取消引用該指針時,您將擁有數組的第一個元素,即一個字符。 這就是為什么在給cout字符時打印h原因。

該字符串保存在二進制文件中的某個存儲位置(在編譯源代碼時)。

"hello"這樣的字符串將轉換為char * (指向char的指針)。 因此,當您取消引用它時,它將獲得“字符串”的第一個字符。

暫無
暫無

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

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