在c ++

时间:2017-07-12 17:35:47

标签: c++

为什么以下代码产生输出“h”?我不明白。既然它取消引用它,它不应该打印出它的内存地址吗?

#include <iostream>
    #include <iomanip>

using namespace std;

int main() {
    cout << *("hello");

    return 0;
}

3 个答案:

答案 0 :(得分:5)

“hello”计算指向字符串第一个字符的指针,取消引用它会计算该字符。

答案 1 :(得分:2)

字符串文字(在本例中为"hello")是大小为const char的{​​{1}}数组,其中N是字符数加上空终止符。该数组可以衰减为指向第一个元素的指针。当您取消引用该指针时,您现在拥有该数组的第一个元素,即一个字符。这就是为什么N在您给h字符打印​​的原因。

答案 2 :(得分:0)

字符串保存在二进制文件的某个内存位置(编译源代码时)。

"hello"这样的字符串被转换为char *(指向char的指针)。因此,当您取消引用它时,它将为您提供&#34;字符串&#34;的第一个字符。