专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C++

c++ char*指针,该如何解决

发布时间:2011-06-28 13:19:07 文章来源:www.iduyao.cn 采编人员:星星草
c++ char*指针

#include<iostream>
using namespace std;
int main()
{
const char*ch0="ch";
const char*ch1="ch";
const char*ch2="chchchc";
cout<<(int*)ch0<<endl;
cout<<(int*)ch1<<endl;
cout<<(int*)ch2<<endl;
return 0;
}

为什么输出的第一个结果和第二个是一样的,而第三个是不一样的?
char*存放的是什么的地址?
------解决方案--------------------
char *指向的是字符串的首地址
后面的都是常量字符串,第一个跟第二个字符串是相同的,如果编译器做优化,那么就只有一个,首地址是相同的,也就是楼主看到的结果,前两个打印出来的是相同的
如果编译器不做优化,每个常量字符串都放一个位置,那打印出来就不相同了。
------解决方案--------------------
需要理解一下c/c++编译器分配内存,ch1和ch2都是放在字符常量区,再次定义字符串常量的时候会在这个区里查看,是否已经被定义过了,如果已经定义过了,就返回之前定义的字符串地址,否则重新分配内存。
PS:字符串常量不能修改,之前犯过这样的错,,,
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: