-1

p喜欢:

typedef int (*p)();

假设我要声明指针的函数是int foo(). 我想使用变量 p 声明一个指向函数 foo 的新指针,以使用 typedef 语句,例如:

typedef int emp[10]; 
emp p;// so now p is an array of size 10 of type int 
4

4 回答 4

1
  1. p是:

    typedef int (*p) ();
    
  2. foo() 是:

    int foo(){
    }
    
  3. p类型变量是f

    p  f = &foo; 
    
  4. 如何使用指针调用:

    (*f)();
    

示例代码:

#include<stdio.h>
int foo(){
 printf("\n In FOO\n");
 return 4;
}
typedef int(*p)();

int main(){
 p f = &foo;
 int i = (*f)();
 printf("\n i = %d\n", i);
 return 1;
}

你会发现它在键盘上工作。

注意:您可以像在键盘上找到的第二种形式 一样简单地分配p f = foo;和调用f()

编辑:正如@Akash 评论的:

它编译并运行如下:

~$ gcc x.c -Wall 
~$ ./a.out 
 In FOO
 i = 4

这是一个帮助解释函数指针有用性的项目。

于 2013-04-12T19:58:53.193 回答
1
int foo()
{
   // do something
}

typedef int (*p)();

int main( int argc, char** argv )
{
    int result;

    p funcPtr = foo;    
    result = funcPtr();

    return 0;
}
于 2013-04-12T19:49:57.927 回答
0

使用 typedef:

typdef int (*FunctionPtr)();

int foo()
{
    return 4; // chosen by fair dice roll, should be random
}

FunctionPtr fptr = foo; // or &foo

没有 typedef:

int (*fptr)() = foo; // or &foo
于 2013-04-12T19:56:46.957 回答
0

来自这篇文章:将 C 函数数组转换为 C++ 函数指针数组?

 #include <stdio.h>

void f1() {printf("helo\n");}
void f2() {printf("world\n");}

typedef struct func
{
    void (*f)();
}func;

int main()
{
    func a[] = {{f1}, {f2}};
    a[0].f();
    return 0;
}
于 2013-04-12T20:01:05.047 回答