指针作函数参数,交换值有错误,以下有几种情况,请仔细讲解以下,看书都看懵了
#include<stdio.h>int main()
{
void change(int *a,int *b);
int x;
int y;
int *t1=&x,*t2=&y;
scanf("%d %d",&x,&y);
if(x<y)
change(t1,t2);
printf("max=%d,min=%d:\n",*t1,*t2);
return 0;
}
void change(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
而以下几种情况不是出错就是不能交换
void change(int *a,int *b)
{
int *temp;//出错
*temp=*a;
a=*b;
b=*temp;
}
void change(int *a,int *b)
{
int *temp;//不能交换!
temp=a;
a=b;
b=temp;
}
void change(int a,int b)
{
int temp;//不能交换
temp=a;
a=b;
b=temp;
}