交换两个整型数

错误示例:

#include<stdio.h>
void Swap(int a,int b) {
    int tmp = a;
	a = b;
	b = tmp;
}
	void main() {
		int a = 10;
		int b = 20;
		printf("交换之前\n");
		printf("a=%d,b=%d\n",a, b);
		Swap(a, b);
		printf("交换之后\n");
		printf("a=%d,b=%d\n", a, b);
}在这里插入代码片

正确方法:交换两个实参的地址

#include<stdio.h>
void Swap(int *a,int *b) {
    int tmp =*a;
	*a = *b;
	*b = tmp;
}
	void main() {
		int a = 10;
		int b = 20;
		printf("交换之前\n");
		printf("a=%d,b=%d\n",a, b);
		Swap(&a, &b);
		printf("交换之后\n");
		printf("a=%d,b=%d\n", a, b);
}

不使用临时变量交换两个整型数
此处同样要使用指针的方式交换两个参数的地址

#include<stdio.h>
void Swap(int *a,int *b) {
	*a = *a ^*b;
	*b = *a ^*b;
	*a = *a ^*b;

}
	void main() {
		int a = 10;
		int b = 20;
		printf("交换之前\n");
		printf("a=%d,b=%d\n",a, b);
		Swap(&a, &b);
		printf("交换之后\n");
		printf("a=%d,b=%d\n", a, b);
}

猜你喜欢

转载自blog.csdn.net/weixin_43788418/article/details/84679325