指针怎么能有一个字符串作为它的值

How can a pointer have a string as its value?

本文关键字:怎么能 有一个 字符串 指针      更新时间:2023-10-16

例如:

const char* f = "123";

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

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

这是足够的信息,因为字符串文本以 null 结尾。发生的情况是在内存中创建大小(字符数(+1 的字符数组。数组中最后一个字符的值为 ''(字面上所有位均为零(,这表示字符串文本的结束,以便按顺序读取该数组的代码知道不会超过该索引。

执行

程序时,文本字符串"123"从程序文件复制到进程的内存中。通常,文本放置在只读内存中。这就是为什么指向字符串文本时需要const的原因。f指向文字的第一个字符。

const char *f = "123";
// f[0] is '1' 
// f[1] is '2' 
// f[2] is '3' 
// f[3] is ''