在理查德·里斯(Richard Reese)所著的《Understanding and Using C Pointers》一书中,作者在第110页指出
"可以使用初始化操作符初始化chararray.在下面的示例中,头数组初始化为字符串字面量中包含的字符:
char header[] = "Media Player";
后来它指出:
"...假设声明位于主函数中,初始化将这些字符复制到以NUL字符结束的数组中,如图5-2所示.
在第111页的图5-2(初始化char数组)中,它显示了位于堆栈上的头数组及其内存地址,但它还显示了用于初始化位于字符串Literal Pool中不同内存地址的数组的字符串.
我发现这与我在KN的书中读到的内容不一致King C Programming A Modern Approach第2版.其中在第281页上,数组初始化如下
char date1[8] = "June 14";
后来在第282页上写道:
尽管"June 14"看起来是字符串字面意思,但事实并非如此.相反,C将其视为数组初始化器的缩写.
根据后面的文本,以及我有限的理解,我认为文本Understanding and Using C Pointers在用于初始化数组时声明"Media Player"是字符串字面量是错误的--它似乎并不是简单地使用术语"字符串字面量"作为字符串的同义词,因为文本随后错误地(?)显示"媒体播放器"位于字符串文本池中,并具有自己的内存地址.
我的理解正确吗?