<分区>
我是 C++ 的新手,当我阅读有关指针的内容时,我有点困惑:
char str[] = "Alex"
char *ptr
ptr = str
cout << ptr
这给出了“Alex”字符串本身,而不是内存位置,而且 *ptr 会给你字母“A”。请有人向我解释为什么会这样吗?
此外,除此之外。当我尝试打印时
cout << *ptr
它给了我第一个字符的地址。这是为什么?,我期待的是第一个值
<分区>
我是 C++ 的新手,当我阅读有关指针的内容时,我有点困惑:
char str[] = "Alex"
char *ptr
ptr = str
cout << ptr
这给出了“Alex”字符串本身,而不是内存位置,而且 *ptr 会给你字母“A”。请有人向我解释为什么会这样吗?
此外,除此之外。当我尝试打印时
cout << *ptr
它给了我第一个字符的地址。这是为什么?,我期待的是第一个值
最佳答案
operator<<
有一个需要 ostream
的重载( cout
的类型)和 const char*
.
该重载处理 const char*
作为空终止 C 字符串的参数,并打印该指针指向的字符,直到它找到终止空字符。
注意传递 char
不指向 char
的空终止序列的指针s 调用未定义的行为。
当您只想输出内存地址时,要避免这种行为,请将指针转换为 void*
第一:
cout << static_cast<void*>(ptr); // outputs the address stored in 'ptr'
关于C++ 指针 - C - 样式字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33268739/