c语言定义 过来拿分

来源:百度知道 编辑:UC知道 时间:2024/06/05 03:26:34
判断对错,说明原因:
char s[200],char *s1="china";
(1)s="you are a student!"
(2)s="china"

第一个是不对的,s是字符数组,是个常量指针,不能对其赋值。
第二个同理。要是第二个是s1="china"就对啦,s1是字符类型的指针,可以指向字符串。

what is the meanning?
please interrupt it!

楼主说的不太明白啊.
至少第一句是不正确的,应该strcpy(s,"you are a student!");才对.

char s[200]; //这个是字符数组,允许在声明的时候初始化赋值,也可以在程序里赋值,,,所以这里是对的.
char *s1="china"; //这个声明字符指针,允许在声明的时候初始化赋值,也可以在程序里赋值,,,所以这里是对的.
s="you are a student!"; //这里是错误的,也s为字符数组,在程序里这样赋值是错误的,你可以一个一个赋值,如s[0]='a';s[1]='b';等等.
s="china"; //这里也是错误的,错误原因同上.

如果下面还有C语句,如果是这样的:
s1="abced"; //这里这样是正确的,因为S1为字符指针,虽然在初始化的时候,s1指向了"china"的首地址,其指针的内容是c的ASCII码值0x63,但是在程序里面又把指针指向了"abcde"的首地址,其指针的内容是a的ASCII码值0x61