请教一个程序问题
答案:3 悬赏:50 手机版
解决时间 2021-02-09 18:36
- 提问者网友:却不属于对方
- 2021-02-09 00:07
程序如下:
#include
#include
void fun(float*p1,float*p2,float*s)
{s=(float*)calloc(1,sizeof(float))
*s=*p1+*p2++;
}
main()
{floata[2]={1.1,2.2},b[2]={10.0,20.0},s=a;
fun(a,b,s);printf("%5.2f\n",*s);
}
*************************结果是1.10,为什么不是21.10求高手解答
真不好意思,上面的程序有些语句打错了,下面的是正确的***********************************************************************************************
#include
#include
void fun(float*p1,float*p2,float*s)
{s=(float*)calloc(1,sizeof(float))
*s=*p1+*p2++;
}
main()
{float a[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;
fun(a,b,s);printf("%5.2f\n",*s);
}
最佳答案
- 五星知识达人网友:躲不过心动
- 2021-02-09 00:27
c语言所有都是传值,包括指针
1. s=a = a[0]=1.1
2. 把s传递过去,也就是a的地址值,但这时fun中的s和main中的s是两个不同的*局部*变量,虽然她们目前指向的地址都是a。
3。给fun中的s另外分配空间,将它指向了另一个地址(这时就不指向a了,main的s依然指向a)
4. fun中的*s仅仅是内部用了一下。
calloc后两个s就已经毫无关联了(指向不同地址)。
如果有任何遗漏欢迎补充。
全部回答
#include
#include
void fun(float *p1,float *p2,float *s)
{
s=(float*)calloc(1,sizeof(float));
*s=*p1+*p2++;
}
main()
{
float a[2]={1.1,2.2}, b[2]={10.0,20.0}, *s=a;
fun(a,b,s);
printf("%5.2f\n",*s);
}
——————————
代码应该是如此的,楼主的头文件还有错。
楼上应该是正解。而函数体中的*s是11.10。开始*p2为10.0而*p2++应该是先算指针再算自增,所以*s为11.10,而最后*p2为20.0
- 2楼网友:低音帝王
- 2021-02-09 01:03
<table><tr><td>第一个</td><td style="width:50px"> </td><td>第二个</td></tr></tabler>
可以给需要的td加上宽度,还有就是左对齐、右对齐、居中这些属性来调整
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯