存储区域
字符串字面量是形如"This is a book.\n"
这样的一组明确的字符串。字符串字面量通常存储在内存的静态存储区。静态存储区大小固定,不受操作系统影响,但是一般比较小。
多个相同的字符串字面量
多个相同的字符串字面量在内存是存储在同一个位置。比如:
const char * a = "This is a book,\n";
const char * b = "This is a book.\n";
虽然a
与b
是两个不同的变量,但是字符串字面量"This is a book.\n"
在内存中只有一个。
生命周期
静态存储区的生命周期在程序开始到程序结束,所以静态存储区在编译阶段就对相关数据分配内存。
访问权限与声明
程序中任何代码都可以访问静态存储区的数据。但是静态存储区的数据不可被修改,所以如下代码错误:
char * a = "This ia a book.\n";
因为按照语法,a
所指区域可以被修改,正确做法如下:
const char * a = "This ia a book.\n";
这里const
表明不可修改其数据。