题目

函数交换两个整数的值(指针参数)

思路

本题用函数交换两个整数的值,必须用指针参数才能改调用者的变量。

void swap(int *x, int *y),用临时变量交换 *x*y;调用时传地址 swap(&a, &b)

解题分析

C 语言按值传参,交换必须传指针。函数内交换 *x*y,main 传地址。与第 5 题变量交换是同一原理的不同场景。

完整程序

#include <stdio.h>

static void swap_int(int *x, int *y)
{
    int t = *x;
    *x = *y;
    *y = t;
}

int main(void)
{
    int a, b;
    if (scanf("%d %d", &a, &b) != 2) {
        return 1;
    }
    printf("before: %d %d\n", a, b);
    swap_int(&a, &b);
    printf("after: %d %d\n", a, b);
    return 0;
}

运行示例

输入:

3 7

输出:

before: 3 7
after: 7 3