C指针实现数据交换
1.方法一
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
void swap(int* a ,int* b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int a = 1;
int b = 2;
printf("before swap a = %d ,b = %d \n",a,b);
swap(&a,&b);
printf("after swap a = %d, b = %d\n",a,b);
system("pause");
return 0;
}
如果写成如下只能交换啊a,b变量的地址
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
void swap(int* a ,int* b)
{
int* temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int a = 1;
int b = 2;
printf("before swap a = %d ,b = %d \n",a,b);
swap(&a,&b);
printf("after swap a = %d, b = %d\n",a,b);
system("pause");
return 0;
}
2.方法二
其实数据交换还有一种不用中间变量
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
void swap(int *a, int *b)
{
*a = *a + *b;
*b = *a - *b; //b = (a + b ) - b -->b = a
*a = *a - *b;// a = (a + b ) - a -->a = b
}
int main()
{
int a = 1;
int b = 2;
printf("before swap a = %d ,b = %d \n",a,b);
swap(&a,&b);//传递地址,交换地址对应的值
printf("after swap a = %d, b = %d\n",a,b);
system("pause");
return 0;
}