求解指针和函数的问题。

img

#indude<stdio.h>
#include<stdlib.h>
void fun(double*pl.double*p2,double*s)
{s=(double*)calloc(1,sizeofdouble));
  *s=*p1+*(p2+1);
}
main()
{doublea21={1.1,2.2},b[2]={10.0,20.0},*s=a;
  fun(a,b,s);
  printf(“%5.2fn”,*s);
程序的输出结果是
   A、21.10
   B、11.10
   C、12.10
   D. 1.10
 正确答案:D

为什么 *s的值没变?

因为在fun函数中,s重新申请了内存空间,所以*s=*p1+*(p2+1)这里操作的时候,是对新申请的内存空间进行处理的,而这个内存在出了fun函数后,没有返回s(因为传进去的是指针,函数内操作指针的时候,对函数外没有影响),也就是说,fun函数对main函数中的s没有影响。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^