C++ 指针 - C - 样式字符串

标签 c++ pointers visual-c++

<分区>

我是 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/

相关文章:

C - 2D 字符指针数组重新分配

visual-c++ - 错误 C2664 : 'sprintf' : cannot convert parameter 1 from 'std::string' to 'char *'

c++ - 如何改变MFC PropertySheet的字体

c++ - 实时启用/禁用 CMenu 项目的最佳方式

c++ - 将值插入 map

c++ - STL中map和hashmap有什么区别

android - 无论小部件结构如何,如何确保按钮关闭应用程序?

c++ - 使用类型别名不适用于 "const"指针

c++ - 如何以编程方式启动 Windows 应用商店应用程序?

c - C 中的指针问题。 段错误