gpt4 book ai didi

c - 用函数交换变量不会影响调用站点

转载 作者:太空宇宙 更新时间:2023-11-04 03:34:27 25 4
gpt4 key购买 nike

几节课前我学习了变量,并在我的家庭作业中遇到了一个关于交换两个数字的问题 - 我使用了第三个变量来解决这个问题。

解决方案看起来有点像这样:

#include <stdio.h>

int main(void) {
int x, y;
scanf("%d %d", &x, &y);

// swappring the values

int temp = x;
x = y;
y = temp;

printf("X is now %d and Y is now %d", x, y);
}

现在我正在学习函数,我想尝试使用辅助交换函数解决上一个问题。

这是我写的代码:

#include <stdio.h>

void swap(int x, int y) {
int temp = x;
x = y;
y = temp;
}

int main(void) {
int a = 3, b = 4;
swap(a, b);

printf("%d %d\n", a, b);
}

我不知道为什么,即使我更改了 swap() 函数中的值,输出仍然是 3 4

为什么会这样?

最佳答案

xy 的地址作为参数传递给函数。现在它们是局部变量,不会对原始变量进行更改。

做如下-

void swap(int *x,int *y){
/* dereference pointers and swap */
int temp = *x;
*x = *y;
*y = temp;
}

然后像这样调用 main -

swap(&x,&y);

关于c - 用函数交换变量不会影响调用站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33710633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com