c++ - 指针如何将字符串作为其值?

标签 c++ pointers

例如:

const char* f = "123";

据我所知,f 的值是地址。但为什么?它不应该产生错误吗?

最佳答案

指针的值不是字符串,而是字符串字面量中第一个字符的内存地址。

这是足够的信息,因为字符串文字是空终止的。 发生的事情是在内存中创建一个大小为(字符数)+1 的字符数组。数组中最后一个字符的值是 '\0'(字面意思是所有位都为零),它表示字符串文字的结尾,因此顺序读取该数组的代码知道不会超过它索引。

关于c++ - 指针如何将字符串作为其值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42101375/

相关文章:

c++ - 为什么带有指向成员函数指针的可变 lambda?

c++ - 访问冲突读取位置0xcdcdcdcd - VS 2010 win7

c++ - C++ 中 "if error then fail fast"的性能损失?

c++ - 替换游戏场景的C++实现

c++ - 在 Ada95 中跨共享库/对象共享数据

c++ - C++中的**是什么?

objective-c - 如何在 Objective-C 中声明双指针属性?

c++ - 通过属性搜索和提取XML节点

c++ - 将指针并集转换为 void*

c++ - 关于带有签名 void *data 的参数的非常基本的问题