C语言习题求结果,请大虾详解

来源:百度知道 编辑:UC知道 时间:2024/05/17 09:50:11
#include<string.h>
main()
{char *s1,*s2,m;
s1=s2(char*)malloc(sizof(char));
*s1=15;s2=20;m=*s1+*s2;
printf("%d\n",m);
}

s1=s2(char*)malloc(sizof(char));
这句写错了,
应该是:
s1=s2=(char*)malloc(sizof(char));

s1=15;s2=20;m=*s1+*s2;
这样,m的结果为40
因为指针s1和s2指向同一个地址,就是malloc的那个地址,
所以后面的s2=20就将先前s1=15给地址中所赋的值给覆盖了,
所以地址中的值就变成了20,*s1和*s2都变成了20