使用void类型过程更改C中的变量

时间:2014-10-15 15:33:06

标签: c procedure void

我需要弄清楚如何使用void类型函数来更改另一个函数中的值,所以我试图编写一个练习程序,使用一个过程将一个整数从5更改为4然后打印新整数(应为4)。

#include <stdio.h>
#include <stdlib.h>

void change(int x)
    {
    x = 4;
    }
int main(int argc, char **argv)
    {
    int z = 5;
    change(z);
    printf("%d\n",z);
    return 0;
    }

最后打印5张。我可以在这里说明范围存在某种问题,但我无法弄清楚如何解决它。我也无法在程序中打印,因此解决方案是不可能的。我真的很感激任何帮助!

4 个答案:

答案 0 :(得分:5)

要更改另一个函数中的变量,不在函数范围内,必须通过指针传递变量。

void change(int *x)
    {
    *x = 4;
    }

使用change(&z)调用该函数。

如果变量没有被指针传递,那么只有函数范围内的变量才会改变,而不是它的参数。

答案 1 :(得分:3)

在C中,函数参数始终按值按值传递。这意味着对函数中的值所做的任何更改都会在调用者中反映出 。这就是你的情况。

幸运的是,你可以传递一个指针(当然是值)。这允许您通过解除引用来更改指针指向的值。

要执行此操作,请将函数的原型调整为

void change(int* x)

然后,在该功能中,使用

*x = 4;

最后,使用

调用该函数

change(&z);

答案 2 :(得分:2)

您需要传递变量的地址,然后才能更改变量的值。

void change(int *x)
{
    *x = 4;
}

现在调用函数将具有x的新值,即4。

答案 3 :(得分:-2)

您可以将指针传递给函数,如下所示:

void change(int * x)