#include<stdio.h>
void swap1(int a ,int b)//这样交换实际上是把a和b两个形参的进行了交换,而主函数中的a b实参是没有变化的
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
void swap2(int *a ,int *b)//这样交换实际上是把a和b两个形参的地址进行了交换,而主函数中的a b实参是没有变化的
{
int *tmp;
tmp=a;
a=b;
b=tmp;
}
void swap3(int *a ,int *b)通过用指针来访问数据,而取*号就是把地址里的内容交换了,就达到了交换的效果
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
int main()
{
int a=5;
int b=8;
swap1(a,b);
printf("a=%d,b=%d\n",a,b);
swap2(&a,&b);
printf("a=%d,b=%d\n",a,b);
swap3(&a,&b);
printf("a=%d,b=%d\n",a,b);
return 0;
}
结构如下:
a=5,b=8
a=5,b=8
a=8,b=5
所以要交换两个数,可以用指针来交换数据的内容。