首页 > 解决方案 > 交换功能如何工作(使用指针)?

问题描述

#include <stdio.h>

void swap(int *a, int *b);

int main(void)
{
    int x = 1;
    int y = 2;

    printf("x is %i, y is %i\n", x, y);
    swap(&x, &y);
    printf("x is %i, y is %i\n", x, y);
}

void swap(int *a, int *b)
{
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

在这段代码中(顺便说一句,我不是写的)我不明白当我们实际交换时ab 在下面的函数中是如何交换 x 和 y 的。我不知道'x和y'和'a和b'之间的关系是什么。

我知道这*是一个指针,'&' 给出了事物的地址,但不知道它是如何指向的,x以及在实际函数中y何时(xy)未提及它们。

我不知道正在使用什么“占位符”。

如果可以的话,请解释一下!

标签: cfunctionpointersswap

解决方案


当您将 x 和 y 的地址传递给交换函数时。该函数的参数指向新地址,并像函数一样交换两个地址的内容。


推荐阅读