我算不对,不知道错在哪了
#include<stdio.h>#include<stdlib.h>
void fun(float *p1,float *p2,float *s)
{
s=(float *)calloc(1,sizeof(float));
*s= *p1+ *p2++;
}
int main()
{
float a={1.1,2.2},b={10.0,20.0},*s=a;
fun(a,b,s);printf("%5.2f\n",*s);
}
为啥调试时1.10,我自己算是21.10{:10_291:} {:5_94:} #include<stdio.h>
#include<stdlib.h>
void fun(float *p1,float *p2,float *s)
{
s=(float *)calloc(1,sizeof(float));
*s= *p1+ (*++p2);
}
int main()
{
float a={1.1,2.2},b={10.0,20.0},*s=a;
fun(a,b,s);printf("%5.2f\n",*s);
}
这样试试 小甲鱼的铁粉 发表于 2020-8-16 16:53
这样试试
这个不是改代码,这是选择题,我不知道按什么顺序看才能算对
#include<stdio.h>
#include<stdlib.h>
void fun(float* p1, float* p2, float** s)
{
*s = (float*)calloc(1, sizeof(float));
**s = *p1 + *p2++;
}
int main()
{
float a = { 1.1,2.2 }, b = { 10.0,20.0 }, * s = a;
fun(a, b, &s); printf("%5.2f\n", *s);
} 在这一步
s=(float *)calloc(1,sizeof(float));
这一步给s赋予了新的内存空间后原来传入的s的地址就消失了,所以下一句加法语句
*s= *p1+ *p2++;
并没有对main函数中的地址s赋值,所以说main函数中的*s还是a,也就是1.10 你的s不用指向a的地址,
s=(float *)calloc(1,sizeof(float) );
*s = *p1+ *++p2;
printf("%f",*s); 你在函数中,把S赋了新地址。新创建了一块内存,把值贱给它。然后,这块新内存中存的是p1+p2的值
但是调用它的主函数中,打印的S值是你在主函数中赋的值A数组。而a为1.1。所以它是1.1。
你自己算也不对。你的程序里面没有循环,只加了一次,应该是11.10。
页:
[1]