有以下程序: #include<stdio.h> #include<stdlib.h> void fun(double*p1,double*p2, double*s) { s=(double*)calloc(1,

admin2019-02-02  20

问题 有以下程序:
    #include<stdio.h>
    #include<stdlib.h>
    void fun(double*p1,double*p2,
double*s)
    {
      s=(double*)calloc(1,sizeof(double));
      *s=*p1+*(p2+1);
    }
    main()
    {
      double a[2]={1.1,2.2),b[2]={10.0,20.0},*s=a;
      fun(a,b,s);
      printf("%5.2f\n",*s);
    }
    程序的输出结果是(    )。

选项 A、11.10
B、1.10
C、12.10
D、21.10

答案B

解析 函数fun()的功能是用calloc()函数重新分配了1个长度为sizeof(double)的连续空间,并把返回的内存地址赋值给s,之后往新分配的内存中写入数据。由于函数传递过程中形参指针指向的变化不能影响到实参指针的指向,所以函数fun()并不能改变s的指向,*s与a[0]等价,格式输出的结果为1.10,答案选B。
转载请注明原文地址:https://kaotiyun.com/show/hbRp777K
0

最新回复(0)