函数与编译预处理,解析越详细越好,谢谢答案是C

以下程序的输出结果是 

void sub(float x, float *y, float *z)

{ *y = *y - 1.0;

*z = *z + x;

}

void main ()

{ float a = 2.5, b= 9.0, *pa, *pb;

pa = &a; pb = &b;

sub(b - a, pa, pb);

printf(“%f\n”, a);

}

A、10.500000

B、9.000000

C、1.500000

D、8.000000

指针呗,pa是指向a的指针,而在函数sub里,把pa作为实参传到了形参y,y当然也是指针,*y在前面加上一个星号表示解引用,那么对*y的操作就会原原本本的对应到主程序里的a上面(因为y指向a的地址,所以是直接对a的那块内存进行操作),于是最后对a的操作其实就是a = a- 1.0

2.5-1.0 = 1.5

不懂得话就到网上搜一搜c语言指针的知识,这里简单几句也说不完