简单的C语言问题

char a[5];a="china";
这个语句正确吗?
a="china";赋值运算左面要变量,a是变量吗?

char a[5];a="china";
这个语句正确吗?
————————————————
不正确,"china"是const char类型,而a是char类型
可以通过指针赋值
比如:
char a[5],*p=a;
p="china";
这样就可以,这里的a是数组第一个元素,也就是一个指针,我们用另外一个指针*p给其赋值

a="china";赋值运算左面要变量,a是变量吗?
——————————————————————
a是变量,但不能这样赋值,a是数组名,在这里也就是指向数组的首地址的指针元素

——————————————————————————
可以这样定义赋值:
char a[6] = "china"; //注意:字符串最后都是以隐藏的'\0'结束的

或者
char *b;
b="china";
char类型的长度有限,而char*相当于长度很长的字符串数组,可以存放很长的字符串
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-09-21
当然错啦!
a虽然指向数组a[5]的首地址,但是确实一个不可变的值
(一但系统申请了a的地址就不修改也不能赋值),有些书
把数组讲成指针了,其实是错的。
也就是不是变量。所以如果有你有写a++;要让它指向下个
元素的值是错的。
但是你可以这样写:
main()
{
char a[5],*p=a;
p="china";
}
p是指针。所以编译可以通过。
第2个回答  2009-09-21
在这里a[5]是个数组
所以a是数组的首地址

这个语句是错的...

如果要改正的话就补充吧,我再按你要求改本回答被提问者采纳
第3个回答  2009-09-21
这是不正确的,你需要这样输入:char a[]="china",如果你要使用这样的方法的话,你可以这样输入:
char a[5];
a[0]='c';
一直到a[4]='a';
第4个回答  2009-09-21
不对
1、你说的a是指针,指向数组首地址
2、赋值方式可以采用初始化赋值或取地址指针,拷贝方式等