使用指针交换两个数字是 C 程序中比较基础的一个操作,攻略如下:
1. 定义两个变量并赋值
首先,需要定义两个变量,并给变量赋值,我们用变量 a 和变量 b 举例:
int a = 10;
int b = 20;
2. 定义交换函数
其次,需要定义一个函数,用来交换两个数字的值。函数可以定义为:
void swap(int* x, int* y) {
int temp = *x;
*x = *y;
*y = temp;
}
上面的函数定义中,参数 x 和 y 都是指向 int 类型变量的指针,函数内部用 temp 变量存储 x 所指向的变量的值,之后将 y 所指向的变量的值赋给 x 所指向的变量,并将 temp 的值赋给 y 所指向的变量。
3. 调用交换函数并输出结果
最后,在主函数中调用上面定义的交换函数,并输出结果。完整的 C 程序代码如下:
#include <stdio.h>
void swap(int* x, int* y) {
int temp = *x;
*x = *y;
*y = temp;
}
int main() {
int a = 10;
int b = 20;
printf("Before swapping:\n");
printf("a = %d, b = %d\n", a, b);
swap(&a, &b);
printf("After swapping:\n");
printf("a = %d, b = %d\n", a, b);
return 0;
}
上面的程序中,我们首先输出 a 和 b 的值,然后调用 swap 函数将 a 和 b 的值交换,最后再输出 a 和 b 的值。
示例1:
假如我们要交换的是两个浮点数,那么在定义 swap 函数时需要将参数的类型由 int 改为 float,完整的代码如下:
#include <stdio.h>
void swap(float* x, float* y) {
float temp = *x;
*x = *y;
*y = temp;
}
int main() {
float a = 10.5;
float b = 20.3;
printf("Before swapping:\n");
printf("a = %f, b = %f\n", a, b);
swap(&a, &b);
printf("After swapping:\n");
printf("a = %f, b = %f\n", a, b);
return 0;
}
示例2:
假如我们要交换的是两个字符,那么在定义 swap 函数时需要将参数的类型由 int 改为 char,完整的代码如下:
#include <stdio.h>
void swap(char* x, char* y) {
char temp = *x;
*x = *y;
*y = temp;
}
int main() {
char a = 'a';
char b = 'b';
printf("Before swapping:\n");
printf("a = %c, b = %c\n", a, b);
swap(&a, &b);
printf("After swapping:\n");
printf("a = %c, b = %c\n", a, b);
return 0;
}
上面的两个示例演示了使用指针交换不同类型变量的方法。注意,虽然变量类型不同,但是 swap 函数的定义都是一样的,只是参数类型不同。