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