0

这是一个简单的测试程序,我试图让 func 函数修改变量 a 和 b,然后在主函数中使用它们。有没有办法让 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);
    }
}
4

3 回答 3

2

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

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

func(&a,&b);

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

于 2013-09-30T10:38:14.593 回答
0

我同意。最好的方法是使用指针。但是你知道你的代码永远不会终止吗?您应该使用可以结束 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);
    }
}
于 2013-09-30T10:46:17.620 回答
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);
      //  }
    }
于 2013-09-30T10:52:01.147 回答