关于字符串赋值

来源:百度知道 编辑:UC知道 时间:2024/06/14 01:37:27
不正确的字符串赋值或赋初值方式是:

A,char str[];str="string";

B, char str[7]={'s','t','r','i','n','g'};

C, char str1[10];str1="string";

D, char str1[]="string",str2[]="12345678";strcpy(str2,str1);

答案选C,为什么C赋值是错误的呢?那如果C是错了,A是正确吗?A为什么正确?
没有按照指定长度?没有赋值的部分不是默认是空字符\0吗?

因为c强制了字符串长度为10,赋值时的字符串"string"却未达到指定长度,而A中定义str时没有指定长度,所以str的长度是根据赋值时给定的来算,因此是正确的

A是不对的。C也是不对的。
A错误两个地方(1)一个数组必须指定其长度!(2)str是数组名因此是一个指针常量,str="string";是把字符串"string"在内存中的首地址传给str。而str是一个指针常量,不能被赋值。
C答案犯了上面说的第二个错误。