main()
{
char *s1,*s2,m;
s1=s2=(char *)malloc(sizeof(char ));
*s1=15,*s2=20;m=*s1+*s2;
printf("%d",m);
} 答案为什么是40!
----------------解决方案--------------------------------------------------------
s1和s2指向的是相同的单元。
----------------解决方案--------------------------------------------------------
#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了吧
我这样理解可以不
----------------解决方案--------------------------------------------------------
你那样理解是对的!!!汗汗...
----------------解决方案--------------------------------------------------------
那你的意思 是否是
#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编辑过]
----------------解决方案--------------------------------------------------------