| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 762 人关注过本帖
标题:解决malloc问题!
只看楼主 加入收藏
fengtianzhi
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2009-8-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
解决malloc问题!
#include<stdlib.h>
#include <stdio.h>
main()
{
    char *s1,*s2,m,a;
    s1=s2=(char*)malloc(sizeof(char));
    *s1=15;
    *s2=20;
    m=*s1+*s2;
    printf("%d",m);
}
运行的结果是40,小弟真的看不懂求高手解决!
搜索更多相关主题的帖子: malloc 
2009-08-10 11:23
josen0205
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:307
专家分:52
注 册:2007-5-8
收藏
得分:20 
s1,s2指向同一个地址,都是malloc返回的地址,*s2 = 20;把s2指向的地址的值改变了;
所以*s1和*s2都是20, 加起来就是40了

只有想不到,没有做不到
2009-08-10 11:35
fengtianzhi
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2009-8-9
收藏
得分:0 
回复 2楼 josen0205

知道了,谢谢你呵呵
2009-08-10 11:38
guoweiyan
Rank: 2
等 级:论坛游民
帖 子:7
专家分:10
注 册:2009-8-3
收藏
得分:0 
main()
{
    char *s1,*s2,m,a;
    s2=(char*)malloc(sizeof(char));
    s1=(char*)malloc(sizeof(char));
    *s1=15;
    *s2=20;
    m=*s1+*s2;
    printf("%d\n",m);
}
你试试看这样行不?
2009-08-10 11:40
fengtianzhi
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2009-8-9
收藏
得分:0 
回复 4楼 guoweiyan

可以了,呵呵谢谢你了,这下理解更透了呵呵
2009-08-10 11:53
robbenmessi
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2008-7-23
收藏
得分:0 
以下是引用josen0205在2009-8-10 11:35的发言:s1,s2指向同一个地址,都是malloc返回的地址,*s2 = 20;把s2指向的地址的值改变了;所以*s1和*s2都是20, 加起来就是40了
既然s1、s2都指向同一个地址,为什么不是都变成*s1=15的值?
2009-08-10 18:36
robbenmessi
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2008-7-23
收藏
得分:0 
刚才蒙住了,是后面的赋值把前边的值覆盖了
2009-08-10 18:40
灵动心境
Rank: 2
等 级:论坛游民
帖 子:12
专家分:66
注 册:2009-8-1
收藏
得分:0 
赋值从右向左
2009-08-11 21:28
快速回复:解决malloc问题!
数据加载中...
 
   



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

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