C语言的字面量其实是一个字符型的指针.如果这个指针在定义的时候出现了,那么它的生命周期和被赋值的变量一样.如果只是写上去了,但没有使用,那么它只会去CPU过一下, 然后就没了.它上面说的意思就是:
char *p = "abcdefg";
p本身只占4字节, 而且它是一个指针, 所以它是不可能会去保存abcdefg这个字符串的.那这个abcdefg是肯定要有一个地方去保存它, 那就是书上说的字符串字面量池.书上说了, 它可以是一个常量, 所以, 在上述定义后,执行:p[2] = 'd'; 编译不会出错, 但在运行时会出现内存错误. 因为它是只读的.所以一般不建议用上述方法定义, 应该这样:const char *p = "abcdefg";这样如果写code是意外改变它的值, 编译器就会首先报错. 或是就不这样定义, 而是这样:char *p[] = "abcdefg"; 这样p就是一个常量了, 而p就是一个数组名, 也是一个指针. 而它指向的是char型变量, 所以可以改变它的值.
温馨提示:答案为网友推荐,仅供参考