9.6 更改主调函数中的变量
有时需要在一个函数中更改其他函数的变量。
交换两个变量x和y的值
x = y;
y = x;
不起作用,y和x的值等于原始y的值。
temp = y;
y = x;
x = temp;
成功交换x和y的值。
交换值
/* swap1.c -- first attempt at a swapping function */
#include <stdio.h>
void interchange(int u, int v); /* declare function */
int main(void)
{
int x = 5, y = 10;
printf("Originally x = %d and y = %d.\n", x , y);
interchange(x, y);
printf("Now x = %d and y = %d.\n", x, y);
return 0;
}
void interchange(int u, int v) /* define function */
{
int temp;
temp = u;
u = v;
v = temp;
}
/* 输出:
*/
两个变量的值并未交换。
/* swap2.c -- researching swap1.c */
#include <stdio.h>
void interchange(int u, int v);
int main(void)
{
int x = 5, y = 10;
printf("Originally x = %d and y = %d.\n", x , y);
interchange(x, y);
printf("Now x = %d and y = %d.\n", x, y);
return 0;
}
void interchange(int u, int v)
{
int temp;
printf("Originally u = %d and v = %d.\n", u , v);
temp = u;
u = v;
v = temp;
printf("Now u = %d and v = %d.\n", u, v);
}
/* 输出:
*/
interchange中的变量进行了交换,但main中的两个变量并没有进行交换。能否用return语句把值传回main()?当然可以,在interchange()的末尾加上下面一行语句:
return (u);
然后修改main()中的调用:
x = interchange( x, y );
这只能改变x的值,而y的值依旧没变。用return语句只能把被调函数中的一个值传回主调函数,但是现在要传回两个值。这没问题!不过,要使用指针。