获取子函数来修改变量

时间:2013-09-30 10:36:06

标签: c pointers

这是一个简单的测试程序,我试图让func函数修改变量a和b,然后在main函数中使用它们。有没有办法让func返回修改后的变量,以便可以使用它们? (最好不使用struct,因为我不明白它是如何工作的)

#include <stdio.h>

void func(int a, int b)
{
    a=a+1;
    b=b+1;
}

void main(void)
{
    int a=0, b=0;
    while (1)
    {
        func(a,b);
        printf("%d\n",a);
    }
}

3 个答案:

答案 0 :(得分:2)

如果你想修改调用函数中的变量,你必须将它们的地址传递给func(即传递指向这些变量的指针

void func(int* a, int* b)
{
    *a=*a+1;
    *b=*b+1;
}

func(&a,&b);

您的代码按值传递其参数。这意味着ab被复制到新变量中,这些变量使用调用变量的值进行初始化,但仅在func的持续时间内存在。

答案 1 :(得分:0)

我同意。最好的方法是使用pointers。但是你知道你的代码永远不会终止吗?您应该使用可以结束while循环执行的条件。

另外,如果你想对两个变量执行完全相同的操作,你可以像这样使用return语句:

#include <stdio.h>
void func(int a, int b)
{
    return a+1;
}

void main(void)
{
    int a=0, b=0;

    while (a < 5)
    {
        func(a);
        func(b);
        printf("%d\n",a);
    }
}

答案 2 :(得分:0)

我们可以通过指针实现。不要使用While(1)因为它将进入无限循环。我认为以下计划对您有帮助。

  #include <stdio.h>

    void func(int* a, int* b)
    {
    *a=*a+1;
    *b=*b+1;
    }

    void main(void)
    {
    int a=0, b=0;
    //while (1)
    //    {
        func(&a,&b);
        printf("%d\n",a);
      //  }
    }