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

时间:2017-02-07 22:40:27

标签: c++ pointers

例如:

const char* f = "123";

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

当您执行程序时,文字字符串"123"将从程序文件复制到进程的内存中。通常,文字放在只读存储器中。这就是指向字符串文字时const所需的原因。 f指向文字的第一个字符。

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