新手求教,char* ch和char ch[]这两个定义有啥区别啊

e_tie 2005-04-22 02:53:01
rt
...全文
1769 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
听海拉拉 2005-04-22
  • 打赏
  • 举报
回复
w
xjp6688 2005-04-22
  • 打赏
  • 举报
回复
看以前的一些帖子,说过N边了
shazi_pig 2005-04-22
  • 打赏
  • 举报
回复
给上面搂主顶一下。
zjraycj 2005-04-22
  • 打赏
  • 举报
回复 1
char *ch//表示ch是一个指向字符串的指针,它可以指向字符串常量也可以指向字符串数组即字符
//数组 。
char ch[]//表示字符数组或字符串,且该数级的内容可以改变。前者可以指向后者,反之不可以
例子:

char *ch="abcd"//这里表示ch指向字符串常量,内容不可改,但ch还可以指向别的字符串。

char ch1[]="abcd"等价于char ch[]={'a','b','c','d','\0'}。注意这里的"abcd"不是常量
虽然ch,ch1同样可以表示指向字数串的指针(这样说不太准确),但ch=ch1可以,而ch1=ch不可以,因为数组名表示常量指针
v41dugu 2005-04-22
  • 打赏
  • 举报
回复
char *pch = "abcd";
这个是把"abcd"这个字符串的首地址传给pch这个指针变量。

char mych[5] = "abcd";
而这个是有一个名为mych的长度为5的字符数组,它的前四个元素分别为'a','b','c','d',第五个元素是'\0'
anyy0929 2005-04-22
  • 打赏
  • 举报
回复
char ch[]在编译时是不是都要变为char* ch??
bobogoing 2005-04-22
  • 打赏
  • 举报
回复
我对这个也是有点搞不清楚。
例如:
char *pch = "abcd";
char mych[5] = "abcd";

知道pch是指向"abcd"的一个char指针,
而mych同样存储的是字符数组的首地址,也就是说同样是指针,那这样的话,除了字符数组最后一个字符是'\0'之外,好象两者就没有什么区另了是吗?

请朋友说解释我听听吧。
useresu 2005-04-22
  • 打赏
  • 举报
回复
还有区别:初始化的问题
char * ch = 'abcde';
这样指向字符串文字量的,相当与const ch[5];
是不能改变常量数组的内容的,
ch[4] = 'e'//error,给常量赋值,无意义

char ch[5] = 'abcde';
可以当普通数组使用,是可以修改的.
ch [4] = 'e';//right,没错
fibbery 2005-04-22
  • 打赏
  • 举报
回复
写错了:constant
fibbery 2005-04-22
  • 打赏
  • 举报
回复
char * ch;//字符型指针,是一个变量。此时未初始化。
char ch[20];//字符型数组,是多个字符变量。ch是一个count类型的指针,不可以改变。

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧