下面能正确进行字符串赋值操作的语句是( )A.char s[5]={"ABCDE"};b.char s[5]={'A','B','C','D','E'};c.char *s="ABCDEF";d.char *s;scanf("%s",s);C是对的, 但是B为什么不对?不解
热心网友
这么说吧!这道题问得不是很明确如果按照我的理解下列字符串赋值语句正确的是:()如果题目是这个意思,确实是C正确,因为B进行的并不是字符串赋值,而是字符数组,这样赋值出来的字符数组不能当字符串使用,因为没有字符串的结束符'\0',如果作为字符串使用,会造成程序输出异常甚至异常中止。这样的变量只能是字符数组。而C赋值出来的指针是不能改变其值的(除非为改变其指向的地址),因为它所获得的地址是字符串常量的地址,地址内的值是常量不能改变。
热心网友
回为B项不是字符串,而是字符数组。对于字符串,其末尾一定有/0
热心网友
B是字符数组!
热心网友
数组初始化跟赋直是不同的,C答案也不能算完全正确,C是把地址赋直
热心网友
对就是对,不对就不对了