错误的,不能用赋值语句将一个字符串常量直接给一个字符数组赋值。
chars[20];
charss[]="hello";
s=ss;错误原因是:是您不能使用赋值语句将一个字符数组直接赋值给一个字符串数组,也就是说,必须使用strcpy()函数来实现一个字符串的副本(在c语言中,但是在c++的string类中,上面的赋值是正确的)。
因为赋值字符“=”右边的表达式也可以是赋值表达式,下面的形式变量是=(变量=表达式);这是真的,所以它是嵌套的。展开后的一般形式为:variable=variable=…=表达式;例如:a=b=c=d=e=5;根据赋值运算符的正确啮合,其有效等价为:e=5;D=e;C=d.B=C.A=B;
Chara[]="toyou";正确的理由:因为当你声明一个数组变量时,你只是为它腾出空间并初始化它,这是c语法。
扩展资料:
C语言中字符串赋值的理解
一、指针式赋值
上面的例子很明显,也很容易理解。但是下面的方法有点难以理解。
通过程序的运行,我们可以知道:char*p="hello";这个字符串赋值非常好。为了理解这个赋值,我们首先需要理解双引号在这个语句中的作用(注意:这是双引号,不要使用单引号)。双引号有三个主要作用:
(1)申请了空间(在常量区),存放了字符串。
(2)在字符串尾加上了“\0”。
(3)返回地址。
这里所返回的地址就赋值给了char*类型的指针变量p。
二、通过字符数组直接把字符串赋值。程序如下:
三、需要注意的一些问题
直接把字符串赋值给数组名(也就是数组首元素的首地址)是不行的。