C++疑问,赐教

来源:百度知道 编辑:UC知道 时间:2024/09/25 23:14:31
char ch[] = "c++";
中的ch[0]

char *ch="C++"
中的ch[0]
有什么区别?

char ch[]中的ch[0]是可读可写的,char *ch中的ch[0]是只读的。

char ch[]是一个字符数组,char ch[] = "c++";这句话的意思是将'c','+','+','\0'四个字符分别装入数组ch对应的元素中,对应的ch[0]不仅可以读取该位置的值,还能够修改 比如ch[0]='b';这是允许的,但是不允许ch++这样的改变,因为ch是常量,编译出错。
char *ch="C++"中ch是一个字符型指针,"C++"是一个字符串常量,保存在常量区中,我们平时应用它都是以一个字符地址的形式来引用的,char *ch="C++"这句话就是把"C++"这个字符常量的地址幅值给了ch,在这种情况下ch[0]是不允许被更改的,ch[0]='b'这样的语句会引起只读内存错误,ch++这样的操作是允许的,ch++就对应到了ch[1]这个位置上了。

数组的意义就是拥有了这块内存空间,指针只是标记了一个起始地址,这块地址的具体属性要分情况来看。

第一次帮人回答问题。。。

两者没有区别,楼主

字符数组在编译时和指针字符串是同样的方式处理的。

C++中声明的数组返回的是该数组的首地址,[]是下标运算符,因此char ch[] = "c++"中的ch[0]=*(ch+0)=*ch,同样的char *ch="C++"中ch[0]=*(ch+0)=*ch,所以说这个表达式ch[0]两者没有区别,但是ch一个是数组,一个是指针变量,他们还是不同的,有各自的运算方法,只是你问的这个问题刚好是两者有同样的效果,因此没有区别

第一个是数组形式
第二个是指针形式
二者含义相当 都是定义数组ch第一个元素ch【0】
所以没有差别 唯一就是表达方式不同
希望你能理解