| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 524 人关注过本帖
标题:关于malloc
只看楼主 加入收藏
y218z903
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-7-27
收藏
 问题点数:0 回复次数:6 
关于malloc
#include"malloc.h"
main()
{
char *s1,*s2,m;

s1=s2=(char *)malloc(sizeof(char ));
*s1=15,*s2=20;m=*s1+*s2;
printf("%d",m);
} 答案为什么是40!
搜索更多相关主题的帖子: malloc 
2007-08-22 10:25
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 
s1和s2指向的是相同的单元。
2007-08-22 10:44
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 
以下是引用y218z903在2007-8-22 10:25:34的发言:
#include"malloc.h"
main()
{
char *s1,*s2,m;

s1=s2=(char *)malloc(sizeof(char ));
*s1=15,*s2=20;m=*s1+*s2;
printf("%d",m);
} 答案为什么是40!

s1 = s2 = ...
意思是说s1是指向s2的,所以*s2 = 20,*s1 实际上也变成20了


2007-08-22 10:50
y218z903
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-7-27
收藏
得分:0 
那你的意思 是否是
#include"malloc.h"
main()
{
char *s1,*s2,m;

s2=s1=(char *)malloc(sizeof(char ));
*s1=15,*s2=20;m=*s1+*s2;
printf("%d",m);
} 那答案就是30?

2007-08-22 10:56
可见光
Rank: 1
等 级:新手上路
帖 子:143
专家分:0
注 册:2007-6-15
收藏
得分:0 

这个应该是顺序问题吧~@!@s2=s1=(char *)malloc(sizeof(char ));

*s1=15,*s2=20执行后就变成了*s2=*s1=20了吧
我这样理解可以不

2007-08-22 11:21
y218z903
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-7-27
收藏
得分:0 
你那样理解是对的!!!汗汗...

2007-08-22 11:24
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 
以下是引用y218z903在2007-8-22 10:56:59的发言:
那你的意思 是否是
#include"malloc.h"
main()
{
char *s1,*s2,m;

s2=s1=(char *)malloc(sizeof(char ));
*s1=15,*s2=20;m=*s1+*s2;
printf("%d",m);
} 那答案就是30?

不是,刚才我没把意思说清楚。其实s1,s1经过你那样赋值后,都是指向同一块存储单元。这样无论是
s1 = s2 = ...,还是s2 = s1 = ...只要最后是*s2 = 20,那么结果就是40. 如果最后*s2 = 15,则结果为30.

例如:
#include"malloc.h"
main()
{
char *s1,*s2,m;

s2=s1=(char *)malloc(sizeof(char ));
*s1=20,*s2=15;m=*s1+*s2;
printf("%d",m);
}

结果 30

[此贴子已经被作者于2007-8-22 11:59:46编辑过]


2007-08-22 11:58
快速回复:关于malloc
数据加载中...
 
   



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

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