C Primer Plus(6) 中文版 第9章 函数 9.6 更改主调函数中的变量

发布于:2023-01-11 ⋅ 阅读:(401) ⋅ 点赞:(0)

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语句只能把被调函数中的一个值传回主调函数,但是现在要传回两个值。这没问题!不过,要使用指针。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到