| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 504 人关注过本帖
标题:do8do8,我发现了一个能够修改字符字面量的一个方法!!
只看楼主 加入收藏
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
结帖率:76.92%
收藏
已结贴  问题点数:10 回复次数:3 
do8do8,我发现了一个能够修改字符字面量的一个方法!!
平时我们说如果 char *cStr="China";
就把这个指针定义为字符字面量,并且不能修改。例如:重新定义 cStr="LoveChina";的话
便会出现错误,不能更改。但是下面的代码可以用来更改字符字面量,是不我代码有问题??Why?
请高手解释:有劳!!


#include "stdio.h"
int main()
{  
  
   char *cChar="China";    /*  定义字符字面量  */
   printf("cChar is:%s\n",cChar);   


   cChar=malloc(10);
   cChar="abcdefg";       /*  重新赋值字符字面量  */
   printf("cChar is:%s\n",cChar);  
  
   system("pause");

}

这几行代码在MinGW 可以通过,请测试一下VC吧!!

不过还是请高手解释一下原因。
搜索更多相关主题的帖子: 字面 字符 
2010-07-19 19:25
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:10 
在你的函数里面。malloc没有任何意义,去掉这句话也是对的。
因为你定义了一个指向字符串的指针cChar,开始给这个指针赋了初值,这个初值是"China"这个字符串的首地址,所以指针就可以访问字符串的所有值了。
而后面你又给 cChar赋了另外一个值,使cChar指向"abcdefg"这个字符串的首地址,然后cChar就可以访问这个新的字符串了。
在整个过程中malloc有或没有是没有影响的!
2010-07-19 19:48
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
,恭喜你发现了新大陆/

我就是真命天子,顺我者生,逆我者死!
2010-07-19 20:19
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
收藏
得分:0 
呵呵,我知道是我错了!!
看来自学的方法是错的,别人已经在搞五字棋了,而我还在为指针与数组的事纠缠不清。
可恨呀!!
2010-07-19 21:49
快速回复:do8do8,我发现了一个能够修改字符字面量的一个方法!!
数据加载中...
 
   



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

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