我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
我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
p
是:
typedef int (*p) ();
foo() 是:
int foo(){
}
p
类型变量是f
:
p f = &foo;
如何使用指针调用:
(*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
这是一个帮助解释函数指针有用性的项目。
int foo()
{
// do something
}
typedef int (*p)();
int main( int argc, char** argv )
{
int result;
p funcPtr = foo;
result = funcPtr();
return 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
来自这篇文章:将 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;
}