c - 交换功能如何工作(使用指针)?
问题描述
#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;
}
在这段代码中(顺便说一句,我不是写的)我不明白当我们实际交换时a
和b
在下面的函数中是如何交换 x 和 y 的。我不知道'x和y'和'a和b'之间的关系是什么。
我知道这*
是一个指针,'&' 给出了事物的地址,但不知道它是如何指向的,x
以及在实际函数中y
何时(x
和y
)未提及它们。
我不知道正在使用什么“占位符”。
如果可以的话,请解释一下!
解决方案
当您将 x 和 y 的地址传递给交换函数时。该函数的参数指向新地址,并像函数一样交换两个地址的内容。
推荐阅读
- f#-giraffe - 在视图中显示整数
- docker - Airflow Docker Operator 无法在本地机器上找到 .sock 文件
- mysql - 在时间序列数据表中为每个 ID 子组添加缺失的日期记录
- plugins - 错误:在项目同步之前无法运行配置
- python - pytorch 概率函数的等效张量流是什么:torch.bernoulli?
- python - ipywidgets.embed 缺少依赖项?在venv中运行时出现关键错误
- algorithm - 多个圆形成的相交区域数
- node.js - Node.js - 当我知道数据在那里@我正在使用的 URL 时,为什么我的 HTTP GET 请求返回 404
- bash - 是否有标准位置默认为 Ubuntu Linux 中的所有用户设置 PAGER 环境变量?
- python - Keras ImageDataGenerator 饱和 16 位图像