03_更改主调函数中的变量

声明:本程序参考了Stephen Prata的著作《C Primer Plus》。

有时候需要在一个函数中更改其他他函数的变量。如

x = y;
y = x;

这完全不起作用。需要多写一行代码,储存x的原始值。

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

上面这三行函数就可以实现交换值得功能。写个测试程序:

/* swap1.c -- first attempt at a swapping function */
#include 
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;
}

打印结果:
03_更改主调函数中的变量_第1张图片
两个变量的值并未交换!
让我们在void interchange(int u, int v)添加一些打印语句来检查错误!

/* swap2.c -- researching swap1.c */
#include 
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);
}

打印结果:
03_更改主调函数中的变量_第2张图片
看来,interchange()并没有问题,他交换了u和v的值,问题出现在把结果传回main()时,interchange()使用的变量并不是main()中的变量。
需要使用指针解决;

/* swap2.c -- researching swap1.c */
#include 
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;
    temp = *u;
    *u = *v;
    *v = temp;
}

结果:
03_更改主调函数中的变量_第3张图片

你可能感兴趣的:(c语言,c语言)