为什么a=a-*p后a的值不变?

img

img


为什么经过sub函数a减去*p后a的值不变?在这里a不是减掉了一个指针的地址嘛

void sub(double a, double *b) 形参 a 是值传递,在sub()函数里对 a 的值的改变,因为形参 a 的作用域的原因,不会影响主函数里实参 x 的值。形参 pb 是地址传递,就是将实参 y 地址传递给形参*pb,在sub() 函数里对 *pb的改变,就是直接对实参 y 的得修改变动,这也是用指针变量的意义。

在c中有且只有一种传递方式 指针传递形参的改变会影响实参,其他传递 形参改变实参不改变,然而a,不是指针传递,所以形参的改变不会影响实参。所以仍为10.2。形参b是指针传递,形参的改变会影响实参,所以会发生改变b会发生改变

传值调用原始值不变,传指针调用原始值改变

img