首页 > 代码库 > 关于字符指针和字符数组初始化的问题
关于字符指针和字符数组初始化的问题
int main(){ char a[6]="hello"; char b[6]="hello"; char* c="hello"; char* d="hello"; //*(c+1)=‘!‘;出错 if(a==b) cout<<"1"<<endl; if(c==d) cout<<"2"<<endl; return 0;}
该题输出的是2.
原因:a和b之所以不相等,因为他们的内存是在运行时栈上分布的,也就是说可以随机访问并且更改他们自己的数组空间。
而c和d的初始化的空间分配,是在编译的时候就分配好了,"hello”放在了常量区,而栈上的c和d这两个字符指针,只是指向了这块固定的常量区,由于是放在常量区的,所以指针所指向的内容也就是不能修改的,但是修改指针的指向是可以的。如下:
*(c+1)=‘!‘;//出错c="!";//指向了另外一块常量区内存
关于字符指针和字符数组初始化的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。