- C语言main()main(){intx=1,y=2;intfu
- main ( )
{ int x = 1 , y = 2 ;
int func( ) ;
y = func (&x , &y); x = func(&x, &y) ;
printf ("x = %d , y = %d \n" , x , y ) ;
}
func ( int *a, int *b)
{ if ( *a > *b)
( *a ) -= *b ;
else ( *a ) -- ;
return ( *a + *b ) ;
}
A) x = 2 , y = 1
- main ( )
{ int x = 1 , y = 2 ; //定义两个变量x,y,并分别赋予初值
int func( ) ; //声明
y = func (&x , &y); x = func(&x, &y) ; //调用函数func(),并将返回值赋予x,y,参数是变量x,y的地址。
printf ("x = %d , y = %d \n" , x , y ) ; //输出x,y。
}
func ( int *a, int *b) //函数定义,参数为指针
{ if ( *a > *b) //判断传进来的参数大小,实际比较x,y大小
( *a ) -= *b ; //如果x>y,x=x-y;
else ( *a ) -- ; //否则x=x-1
return ( *a + *b ) ; //返回x+y。
}
当调用y=func(&x,&y)时,因为此时x=1,y=2,所以,执行x=x-1,此时,x=0.返回x+y即是2。此时,x,y的值分别是0,2。
当调用x=func(&x,&y)时,此时,x,y的值分别是0,2,执行x=x-1,x=-1,返回x+y即是2+(-1)=1,此时,x,y 的值分别是,1,2。