标题:解决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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-282165-1-1.html




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

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