使用变量表示C中的函数

时间:2009-10-07 00:05:27

标签: c pointers function

这具有我想要的功能(并且可以工作)

#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()功能中编辑任何内容。

4 个答案:

答案 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)