#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void swap1(int a, int b)//值传递
{
printf(" 函数中变量a的地址%x,b的地址%x\n", &a, &b);
int temp;
temp = a;
a = b;
b = temp;
}
void swap2(int a, int b)//值传递
int temp;
temp = a;
a = b;
b = temp;
}
void swap3(int *p1, int *p2)//地址传递
{//函数中仅仅只是交换了形式参数指针p1,p2的地址,没有交换实参pa,pb的地址
//注意指针p1,p2的地址和指针pa,pb的地址不一样
int *p;
p = p1;
p1 = p2;
p2 = p;
}
void swap4(int *p1, int *p2)//地址传递,此地址传递成功,交换值成功
{
int t;
t = *p1;
*p1 = *p2;
*p2 =t;
}
void main()
{
int a, b;
printf("主函数中变量a的地址%x,b的地址%x\n", &a, &b);
scanf("%d,%d", &a, &b);
int *pa , *pb ;
pa = &a;
pb = &b;
if (a < b)
{
swap1(a, b);值传递,交换不成功
//swap2(*pa, *pb);/虽然是指针,仍然是/值传递,交换不成功
//swap3(pa, pb);
//swap4(pa, pb);地址传递
}
printf("交换后a的值是%d,b的值是%d", a, b);
system("pause");
}