几节课前,我学习了变量,并在作业中遇到了一个关于交换两个数字的问题 - 我使用了第三个变量来解决这个问题。
解决方案看起来有点像这样:
#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);
}
不知道为什么,输出还是这样3 4
即使我改变了里面的值swap()
功能。
为什么会发生这种情况?
传递地址x
and y
作为函数的参数。现在它们是局部变量,不会对原始变量进行更改。
执行以下操作-
void swap(int *x,int *y){
/* dereference pointers and swap */
int temp = *x;
*x = *y;
*y = temp;
}
并致电main
像这样 -
swap(&x,&y);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)