onemoo
2018-07-05 00:58:02 +08:00
> "111111", "3333", "2222" 是常量区的字符串常量吗?
你指的是等号右侧大括号中的这三个的话,那么是的。这样写出来的字符串字面量是不可更改的,可能会放在只读数据区。
> 数组 buf2 中 存储的是 常量区的地址还是 字符?
当初始化数组时,等号右侧的大括号中的每一项被用来初始化数组的相应元素。
这里 buf2 数组的元素还是数组,所以(前三个)数组元素是由字符串字面量("111111", "3333", "2222")来初始化的。
用字符串字面量初始化 char 数组时,数组中直接保存这些字符。所以 buf2[0] 中就直接存储了 "111111" 这几个字符。
那么,buf2 中保存的是这些字符,不是地址。
如果代码是 const char *buf2[10] = { "111111", "3333", "2222" },buf2 的元素是 const char 指针类型,其中保存的自然就是这三个字符串常量的地址了。