#include <stdio.h>
int main()
{
/*
int i = 10;
int* p;
printf("*p:\np=%d\t",p);
printf("*p=%d\n",*p);
*p = i;
printf("*p=i:\np=%d\t",p);
printf("*p=%d\t",*p);
printf("i=%d\n",i);
*p = &i;
printf("*p = &i:\np=%d\t",p);
printf("&i=%d\t",&i);
printf("*p=%d\t",*p);
printf("i=%d\n",i);
p = &i;
printf("p = &i:\np=%d\t",p);
printf("&i=%d\t",&i);
printf("*p=%d\t",*p));
printf("i=%d\n",i);
*/
void change1(int a,int b);
void change2(int* a,int* b);
void change3(int *a,int* b);
int *p1,*p2,*p,a,b,temp;
scanf("%d,%d",&a,&b);
p1=&a; p2=&b;
/*
if(a<b)
//{ p=p1; p1=p2; p2=p;}
{ temp=*p1; *p1=*p2; *p2=temp;}
*/
change1(a,b);
printf("change1--main函数中:a=%d,b=%d\n",a,b);
printf("change1--main函数中:*p1=%d,*p2=%d\n",*p1,*p2);
change2(p1,p2);
printf("change2--main函数中:a=%d,b=%d\n",a,b);
printf("change2--main函数中:*p1=%d,*p2=%d\n",*p1,*p2);
change3(&a,&b);
printf("change3--main函数中:a=%d,b=%d\n",a,b);
printf("change3--main函数中:*p1=%d,*p2=%d\n",*p1,*p2);
printf("max=%d,min=%d\n",*p1,*p2);
system("pause");
return 0;
}
//函数的值传递--传递的是参数的数值,
//在方法中,相当于一个副本使用,不影响函数外面的变量
void change1(int a,int b)
{ int temp = a;
a = b;
b = temp;
printf("change1中:a=%d,b=%d\n",a,b);
}
//使用指针(地址/引用)作为参数
void change2(int* a,int* b)
{ //使用临时指针,存储传递过来的指针,交换指针的指向
//只能在方法中起作用,不影响方法外面的指针的使用
int *temp = a;
a = b;
b = temp;
printf("change2中:a=%d,b=%d\n",*a,*b);
//如果想要实现方法外面的指针也发生改变,则函数需要使用
//指向指针的指针作为参数(或者直接在外面进行交换指向)
}
//使用(地址/引用)作为参数
void change3(int *a,int* b)
{ //使用临时变量来存储指针指向位置的值
//通过指针(的指向),来直接修改指针指向的位置的数值
int temp = *a;
*a = *b;
*b = temp;
printf("change3中:a=%d,b=%d\n",*a,*b);
//这种方式,能够直接影响方法外面的数据的使用
}
int main()
{
/*
int i = 10;
int* p;
printf("*p:\np=%d\t",p);
printf("*p=%d\n",*p);
*p = i;
printf("*p=i:\np=%d\t",p);
printf("*p=%d\t",*p);
printf("i=%d\n",i);
*p = &i;
printf("*p = &i:\np=%d\t",p);
printf("&i=%d\t",&i);
printf("*p=%d\t",*p);
printf("i=%d\n",i);
p = &i;
printf("p = &i:\np=%d\t",p);
printf("&i=%d\t",&i);
printf("*p=%d\t",*p));
printf("i=%d\n",i);
*/
void change1(int a,int b);
void change2(int* a,int* b);
void change3(int *a,int* b);
int *p1,*p2,*p,a,b,temp;
scanf("%d,%d",&a,&b);
p1=&a; p2=&b;
/*
if(a<b)
//{ p=p1; p1=p2; p2=p;}
{ temp=*p1; *p1=*p2; *p2=temp;}
*/
change1(a,b);
printf("change1--main函数中:a=%d,b=%d\n",a,b);
printf("change1--main函数中:*p1=%d,*p2=%d\n",*p1,*p2);
change2(p1,p2);
printf("change2--main函数中:a=%d,b=%d\n",a,b);
printf("change2--main函数中:*p1=%d,*p2=%d\n",*p1,*p2);
change3(&a,&b);
printf("change3--main函数中:a=%d,b=%d\n",a,b);
printf("change3--main函数中:*p1=%d,*p2=%d\n",*p1,*p2);
printf("max=%d,min=%d\n",*p1,*p2);
system("pause");
return 0;
}
//函数的值传递--传递的是参数的数值,
//在方法中,相当于一个副本使用,不影响函数外面的变量
void change1(int a,int b)
{ int temp = a;
a = b;
b = temp;
printf("change1中:a=%d,b=%d\n",a,b);
}
//使用指针(地址/引用)作为参数
void change2(int* a,int* b)
{ //使用临时指针,存储传递过来的指针,交换指针的指向
//只能在方法中起作用,不影响方法外面的指针的使用
int *temp = a;
a = b;
b = temp;
printf("change2中:a=%d,b=%d\n",*a,*b);
//如果想要实现方法外面的指针也发生改变,则函数需要使用
//指向指针的指针作为参数(或者直接在外面进行交换指向)
}
//使用(地址/引用)作为参数
void change3(int *a,int* b)
{ //使用临时变量来存储指针指向位置的值
//通过指针(的指向),来直接修改指针指向的位置的数值
int temp = *a;
*a = *b;
*b = temp;
printf("change3中:a=%d,b=%d\n",*a,*b);
//这种方式,能够直接影响方法外面的数据的使用
}