c++ - 对C++中的char指针的困惑

标签 c++ c pointers

我是 c++ 语言的新手,我正在尝试理解指针的概念。

我有一个关于字符指针的基本问题,

我所知道的是,指针是一个存储地址值的变量, 所以当我这样写的时候:

char * ptr = "hello";

根据我的基础知识,我认为在=之后应该有一个地址分配给指针,但是这里我们分配的是“hello”,它是一组字符。 那么这是什么意思?
指针ptr是否指向存储“hello”的地址?还是它自己存储问候语?
我很困惑,希望你们能帮助我..

提前致谢。

最佳答案

ptr 保存文字 "hello" 的存储地址。在本例中,它指向一个字符串文字。它是位于静态(最常见的只读)内存中的不可变字符数组。

您可以通过重新分配使ptr 指向其他内容,但在此之前修改内容是非法的。 (它的类型实际上是 const char*,为了 C 兼容性,不推荐转换为 char*(在 C++11 中甚至是非法的)。

因为有这个保证,编译器可以自由地优化空间,所以

char * ptr = "hello";
char * ptr1 = "hello";

可能产生两个相等的指针。 (即 ptr == ptr1)

关于c++ - 对C++中的char指针的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18678597/

相关文章:

c++ - 与要定义的规则序列相关的 Makefile 行为

c++ - 如何获取新的数组值? C++

c - 如何以不同的方法修复从 struct hack 分配的内存?

c++ - 如何在对象成员函数中重新分配 `this` 指针?

c++ - 动态使用变量参数函数

c++ - 为什么我的浮点值看起来不等于它本身?

c - 在 C、Linux 中打印扩展 ASCII 字符

c - osx下二进制文件的文件格式

c++ - char * 加一个数的结果是什么?

使用 ctypes 在 C 中动态访问 Python 变量