字符数组和指向字符串常量的指针之间的区别?

时间:2017-05-01 15:41:55

标签: c pointers

来自K& R C书,

  

这些定义之间存在重要差异:

char amessage[] = "now is the time"; /* an array */  
char *pmessage = "now is the time"; /* a pointer */ 
  

amessage是一个数组,大小足以容纳字符序列和' \ 0'初始化它。可以更改阵列中的单个字符,但是消息将始终引用相同的存储。另一方面,pmessage是一个指针,初始化为指向一个字符串常量;随后可以修改指针以指向其他位置,但如果您尝试修改字符串内容,则结果是未定义的。

在这种情况下,他们说amessage是一个位于包含足够存储空间的不可变地址的数组。有道理。

这是我不能得到的部分:pmessage是一个指向字符串常量的指针。但这个字符串常量位于何处?是否会自动将计算机留出?如何在pmessage所在的位置修改字符串?为什么字符串不是字符串数组?据我所知,C不能将整个字符串作为一个单元处理。

0 个答案:

没有答案