<<<<<<<<<<奇怪>>>>>>>>>>>>高手帮帮忙 !!!

shishiXP 2003-04-14 07:58:00
const定义的变量一般用指针指他,但是这里可以了
void main()
{
const char a[]="123";
char *p;
p=strchr(a,'2');
if(p==NULL)exit(0);
*p='X';
cout<<"\n"<<a;
cout<<"\n"<<p;
}
结果是: 123
X23
问:怎么有两个值?const定义的变量是怎么存的?是存2份吗?

请各位高手帮帮忙。

...全文
30 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyqiang 2003-04-15
  • 打赏
  • 举报
回复
我想printf("\n%p\t", p);printf("\t%p", &a);
p=&a;
鬼都知道
你没选好例子
shishiXP 2003-04-15
  • 打赏
  • 举报
回复
我又试了这个程序。
void main()
{
const char a='9';
char *p;
p=strchr(&a,a);
if(p==NULL)exit(0);
*p='X';
cout<<"\n"<<a;
cout<<"\n"<<*p;
printf("\n%p\t", p);printf("\t%p", &a);
}
结果是:9
X
且地址一样。
shishiXP 2003-04-15
  • 打赏
  • 举报
回复
//p=strchr(a,a[0]);

怪了。我先用的是g++编译器(unix下的)
后用 dev -c++ 4.9.6.0:
都出现 “123”,“X23”
但用VC6,结果是“X23”,“X23”

不过就算是编译器问题,const不就不安全了吗?




aiyinsitan 2003-04-14
  • 打赏
  • 举报
回复
我这里也没有问题
jp311 2003-04-14
  • 打赏
  • 举报
回复
楼主用的什么编译器呀既然会有如此结果
推荐用printf("%p", p);printf("%p", a);看看p指向的地址,和a的地址
sinman 2003-04-14
  • 打赏
  • 举报
回复
my result from dev -c++:
1X3
X3请按任意键继续 . . .
电脑王杨扬 2003-04-14
  • 打赏
  • 举报
回复
你用的什么编译器啊?我用VC6编译得到的是
(space line)
1X3
X3
一点儿问题也没有啊,没有得到你说的结果啊。


---------------
杨扬
MSR W&N

69,371

社区成员

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

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