关于C语言字符串赋值问题

char *message = "Hello World!";我们知道是把字符串中第一个字符的地址赋值给message。
而char s[ ] = "Hello World!"这句是什么意思?是数组中存了Hello World!还是数组中存了H的地址。对于正确的情况,数组中是怎么存的啊?

char *message="Hello World!";分配了一个变量空间message用于存放地址;
char s[]="Hello World!";是char s[13]="Hello World!";的简写形式,分配了13个字符的存储空间,并且在程序初始化时进行赋值。数组名称不是变量,程序中用到s的地方,系统自动取这个数组的首地址替换。追问

char s[ ];
s = "Hello World!"这个怎么错了呢?你说用到s的地方取他的首地址啊,怎么不能赋值呢?

追答

char s[];应当写成char *s;
char s[];首先是数组没有定义元素个数,其次如果定义数组的话s就不是变量了,无法进行赋值,s只是数组起始地址的别称,s[0],s[1],...才是变量

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-20
char s[ ] = "Hello World! 是存入s[0]=H ,s[1]=e

以此类推···追问

嗯,,我刚知道了,数组可以在定义的时候初始化,如果先定义在赋值就不行了。只能用串拷贝了。。谢谢!