#indude<stdio.h>
#include<stdlib.h>
void fun(double*pl.double*p2,double*s)
{s=(double*)calloc(1,sizeof(double));
*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没有影响。
不知道你这个问题是否已经解决, 如果还没有解决的话: