#include<stdlib.h>
#include<stdio.h>
void swap1(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
void swap2(int *x,int *y)
{
int *temp;
temp=x;
x=y;
y=temp;
}
void swap3(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
void swap4(int a[],int b[])
{
int temp;
temp=a[0];
a[0]=b[0];
b[0]=temp;
}
void swap5(int a[],int b[])
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
int main()
{
int x,y;
x=4;
y=3;
swap1(x,y);
printf("swap1: x:%d,y:%d\n",x,y);//形參傳值,不能交換,實際傳過去是拷貝的一份,沒改變主函數中x,y
swap2(&x,&y);
printf("swap2: x:%d,y:%d\n",x,y);//不能交換,函數中只是地址交換了下,地址指向的內容沒有交換
swap3(&x,&y);
printf("swap3: x:%d,y:%d\n",x,y);//能交換,地址指向的內容進行了交換
swap4(&x,&y);
printf("swap4: x:%d,y:%d\n",x,y);//能交換,地址指向的內容進行交換
swap5(&x,&y);
printf("swap5: x:%d,y:%d\n",x,y);//能交換,地址指向的內容進行交換
return 0;
}
swap1: x:4,y:3
swap2: x:4,y:3
swap3: x:3,y:4
swap4: x:4,y:3
swap5: x:3,y:4
摘自 無聊中的博客