这具有我想要的功能(并且可以工作)
#include <stdio.h>
//includes other libraries needed
int foo();
int main()
{
while(true)
{
while(foo()==1)
{
//do something
}
//does other unrelated things
}
}
int foo()
{
// Returns if a switch is on or off when the function was called
// on return 1;
// off return 0;
}
但是,我希望这种情况发生:
#include <stdio.h>
//includes other libraries needed
int foo();
int main()
{
while(true)
{
//THIS IS THE PROBLEM
int something = foo();
while(something==1)
{
//do something
}
//does other unrelated things
}
}
int foo()
{
// Returns if a switch is on or off when the function was called
// on return 1;
// off return 0;
}
每次调用内部while循环时,如何更新something变量?我知道它与&
或*
有关的参考和指针,但我无法在网上找到关于此的示例。
此外,我无法在foo()
功能中编辑任何内容。
答案 0 :(得分:8)
我认为这就是你的意思:它使用函数指针来表示函数foo
。之后它将它分配给函数bar
:
#include <stdio.h>
//includes other libraries needed
int foo();
int bar();
int main()
{
while(true)
{
int (*something)() = &foo;
while(something()==1)
{
something = &bar;
}
//does other unrelated things
}
}
答案 1 :(得分:6)
由于foo()返回一个值,您需要再次调用该函数以获取最新值 值。在C中执行此操作的简明方法是进行分配并一起检查:
while ((something = foo()) == 1)
{
// do something
}
答案 2 :(得分:1)
要在变量中表示函数,请使用function pointer
int (*something)() = &foo;
答案 3 :(得分:0)
你的循环如何:
while(true)
{
int something = foo();
// do whatever here
if (!something) continue;
do
{
//do something
} while(foo()==1)
//does other unrelated things
}
从你的例子开始,假设你希望在循环之前使用something变量来做事情,并且在进入循环之前不希望对foo()进行新的调用。
如果没有,那么正如另一篇文章中提到的那样,您可以while(something = foo()) == 1)