aとbの交換方法
1直接機能交換が失敗する
#include <stdio.h>
void swap(int a ,int b)
{
printf("swap a=%d b=%d\n",a,b);
int t = a;
a = b;
b =t;
printf("swap end a=%d b=%d\n",a,b);
}
int main()
{
int a = 1;
int b = 10;
swap(a,b);
printf("a=%d b=%d\n",a,b);
return 0;
}
打印:
スワップa = 1 b = 10
スワップエンドa = 10 b = 1
a = 1 b = 10
2ポインタ交換に成功しました
#include <stdio.h>
void swap(int *a ,int *b)
{
printf("swap a=%d b=%d\n",*a,*b);
int t = *a;
*a = *b;
*b =t;
printf("end swap a=%d b=%d\n",*a,*b);
}
int main()
{
int a = 1;
int b = 10;
swap(&a,&b);
printf("a=%d b=%d\n",a,b);
return 0;
}
スワップa = 1 b = 10
エンドスワップa = 10 b = 1
a = 10 b = 1