这是一个简单的测试程序,我试图让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);
}
}
答案 0 :(得分:2)
如果你想修改调用函数中的变量,你必须将它们的地址传递给func
(即传递指向这些变量的指针
void func(int* a, int* b)
{
*a=*a+1;
*b=*b+1;
}
func(&a,&b);
您的代码按值传递其参数。这意味着a
和b
被复制到新变量中,这些变量使用调用变量的值进行初始化,但仅在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);
// }
}