2013-09-30 31 views
0

这是一个简单的测试程序,我试图获取函数func函数来修改变量a和b,然后在主函数中使用它们。有没有办法获得func返回修改后的变量,以便可以使用? (最好不使用结构,因为我不知道它是如何工作)获取子函数来修改变量

#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); 
    } 
} 
+0

您需要[指针](http://en.wikipedia.org/wiki/Pointer_(computer_programming))。 –

回答

2

如果你想修改调用函数的变量,你要他们的地址传递给func(即一个指针传递给这些变量

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

func(&a,&b); 

你的代码按值传递它的参数,这意味着ab被复制到被初始化与调用变量的值,但只存在的func期间新的变量。

+0

+1请扩大答案,解释OP的代码有变量的本地副本 –

+0

@IvayloStrandjev好点,我已经更新了我的答案 – simonc

0

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

另外,如果你想perfom完全相同的动作这两个变量,你可以只使用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); 
    } 
} 
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); 
     // } 
    }