如果用字符串常量初始化字符数组,就是从静态存储区把整个字符串复制给数组。例如:
[cpp]
char a[] = "hello";
如果用字符串常量初始化字符指针,就是把字符串在静态存储区的地址复制给指针。例如:
[cpp]
char *p = "world";
这两种形式的一个重要区别是不能通过指针来修改字符串的值,但是字符数组不存在这个问题,如下语句是错误的:
[cpp]
p[0] = 'p';
而如下语句没有问题:
[cpp]
a[0] = 'a';
为了避免通过指针修改字符串的错误,建议将字符指针声明为const类型,如下所示:
[cpp]
const char *p = "world";