| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1207 人关注过本帖
标题:常量好烦人
取消只看楼主 加入收藏
小牛
Rank: 1
等 级:新手上路
威 望:1
帖 子:434
专家分:8
注 册:2006-10-1
结帖率:81.48%
收藏
 问题点数:0 回复次数:3 
常量好烦人

有这一段程序
#include<stdio.h>
void main()
{ char *p;
p="abcd";
p[2]='x';
printf("%s",p);
}
该程序为将一个字符串常量的首地址赋给p,然后通过p引用该字符串的某个空间,
改变里面的值。这在TC里运用是可以的。结果为abxd.

abcd 是字符串常量,在C语言中常量的值是不可改变的。但在这里,它的值为什么
可以被改变呢?

还有一个问题,这个程序在VC++6。0运行不能通过。为什么?

搜索更多相关主题的帖子: 常量 STRONG abcd 字符 
2006-10-03 09:05
小牛
Rank: 1
等 级:新手上路
威 望:1
帖 子:434
专家分:8
注 册:2006-10-1
收藏
得分:0 
不解,字符串不是按字符数组形试存放?
我问的是字符串“常量”为什么能改变。

本店经营各类国际品牌运动鞋,板鞋,休闲鞋,有李宁,nike,匹克,阿迪达斯。
2006-10-03 10:18
小牛
Rank: 1
等 级:新手上路
威 望:1
帖 子:434
专家分:8
注 册:2006-10-1
收藏
得分:0 

各们大哥:
你们的写的小弟水平有限有点看不懂。

在程序中定义了一个字符指针变量P,
在编译阶段系统已为p分配空间。


对版主“你的错误在于没有给指针分配空间”不理解。

在程序运行过程中没有改变指针变量的值。
p[2]='x';的意思是引用p的值(p的值是个地址)后面的第2个地址空间。
然后将其赋值‘x’,p的值没有改变。


shuaiye“改变指针的内容等于改变字符串常量”不理解。

整个程序的意思是将字符串常量的首地址赋给指针变量p;
然后通过p引用该字符串常量元素的空间,从而改变该字体串
常量的值。这个程序在TC中运行是成功的。

请各位大哥解释清楚一点,以解小弟的烦恼。

小弟刚加入BBS不久,不知以前有过这个问题。请问版主:我可不
可以看到旧贴。怎么看到?




本店经营各类国际品牌运动鞋,板鞋,休闲鞋,有李宁,nike,匹克,阿迪达斯。
2006-10-03 15:48
小牛
Rank: 1
等 级:新手上路
威 望:1
帖 子:434
专家分:8
注 册:2006-10-1
收藏
得分:0 

晕了!对常量的理解究竟应该是怎样的?

难到二进制值没有改变的值就是常量。
如果这样的话,变量也是常量:


因为你虽然改变量的内容,但原来内
容的二进制值并没有改变呀!


本店经营各类国际品牌运动鞋,板鞋,休闲鞋,有李宁,nike,匹克,阿迪达斯。
2006-10-03 19:15
快速回复:常量好烦人
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016105 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved