①源程序
# include <stdio.h>
/*定义函数(被调用函数)*/
void sub(int x,int y,int *z)
/*不需要返回值,加viod*/
{*z=y-x;}
/*主函数(调用函数)*/
main()
{
int a,b,c;
sub(10,5,&a);
/*&a本身没有值,在被调用函数sub中被赋值*/
sub(7,a,&b);
/*&b本身没有值,在被调用函数sub中被赋值*/
sub(a,b,&c);
/*&c本身没有值,在被调用函数sub中被赋值*/
printf (“%d,%d,%dn”,a,b,c);
}
~
②计算过程
sub(10,5,&a)
实参赋值形参
x=10,y=5,*z=&a
用 形参 公式计算
*z=y-x=5-10=-5
即a=-5
函数没有返回值,
不求sub的值,只求 a即可。
此处转化过程为
int*z=&a
即int*(z=&a)
即z=&a
即*z=*&a=a=-5
*和&可以抵消
~
sub(7,a,&b)
实参赋值形参
x=7,y=a=-5,*z=&b
用形参公式计算
*z=y-x=-5-7=-12
即b=-12
~
sub(a,b,&c)
实参赋值形参
x=a=-5,y=b=-12,*z=&c
用形参公式计算
*z=y-x=-12-(-5)=-7
即c=-7
~
最后输出
a=-5,b=-12,c=-7