C 程序 使用指针交换两个数字

  • Post category:C

使用指针交换两个数字是 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 函数的定义都是一样的,只是参数类型不同。