当前位置: 代码迷 >> C语言 >> 关于malloc
  详细解决方案

关于malloc

热度:348   发布时间:2007-08-22 10:25:34.0
关于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  

----------------解决方案--------------------------------------------------------
s1和s2指向的是相同的单元。
----------------解决方案--------------------------------------------------------
以下是引用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了
----------------解决方案--------------------------------------------------------
那你的意思 是否是
#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?
----------------解决方案--------------------------------------------------------

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

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


----------------解决方案--------------------------------------------------------
你那样理解是对的!!!汗汗...
----------------解决方案--------------------------------------------------------
以下是引用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编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案