1. 程式人生 > >交換兩個整型數

交換兩個整型數

錯誤示例:

#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);
}