问关于c语言的问题???谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/20 06:24:13
char ch[5];
ch="abcd";

这样不对吗?说以下理由,谢谢!

char ch[5];
ch="abcd";

不带方括号的数组名是 指针 指向数组的第一个元素
所以ch就指向ch[0]啦
ch[0] 是一个char 字符 只能存贮一个字符 所以ch="abcd"; 是不对的

另外用指针存储字符要用解引除
这么做 *ch='a';

数组必须在初始化的时候赋值
char ch[5]= "abcd";
或者逐项赋值

你可以把ch声明成指针,就可以分开赋值了
char *ch;
ch = "abcd";
不过这样,你不能改里面的元素了

char ch[5]="abcd";//这样可以
C语言中的数组就相当于指针,char ch[5];就是向内存申请了5个char的空间,而ch指向这5个char空间的首地址,所以ch="abcd"这样赋值就有问题了,因为ch只是指向一个char的地址,而"abcd"需要5个char(包括结束符),并且"abcd"是const char*类型,只能在申明的时候赋值,申明过后内存已经给ch分配好空间了,再指向const char*就会出错

定义时才可以这么干

在C语言中,数组和指针一样,所以在你定义一个数组及其长度后,要先进行初始化,你所写的ch="abcd"实际上是ch[0]="abcd",因为一个数组的数组名就代表它指向的第一个位置。

没试过 不过我感觉可以 就像楼上说的 字符窜返回的是首字符的地址