【发布时间】:2019-07-13 05:39:14
【问题描述】:
根据定义
char *str = "ankit"
这里str是一个指向char的指针。
当我们做类似的事情时
cout<< str;
然后它正在打印 ankit。为什么不是存储ankit的地址,因为str是一个指针所以它必须是一个地址
我尝试打印*str,结果是“a”;我可以理解,但我无法理解为什么打印 str 不是给出指针而是给出字符串值。
char * str = "ankit";
cout<< str;
输出:ankit
【问题讨论】:
-
看看如果你这样做
cout << reinterpret_cast<void*>(str);会发生什么。另见Why does my pointer output a string and not a memory address in C++? 和cout << with char* argument prints string, not pointer value。 -
蓝精灵。我应该意识到这个问题得到了回答并再次得到了回答。
-
有趣的旁注:根据 C++11 标准和后续 C++ 标准,
char * str = "ankit";是非法的。字符串字面量是字符的常量数组,不允许使用非常量指针指向常量数据,以防止写入常量数据时发生意外。