Mou*_*hna 5 c variables types pointers declaration
int*(*)(int*,int*(*)())
我想知道它是什么类型的?,有人可以举例说明使用此类型的声明.
任何帮助都会很棒.
谢谢.
Mes*_*ssa 19
它是一个指向函数的指针,它返回int*并接受返回的函数int*指针int*(并接受未定义数量的参数;请参阅注释).
一些例子(看起来不太好,它只是构造成包含所提到的声明):
#include <stdio.h>
static int a = 10;
int* f1() {
return &a;
}
static int b;
int* f2(int *j, int*(*f)()) {
b = *j + *f();
// this is just for demonstrational purpose, such usage
// of global variable makes this function not thread-safe
return &b;
}
int main(int argc, char *argv[]) {
int * (*ptr1)();
int * (*ptr2) (int * , int * (*)());
ptr1 = f1;
ptr2 = f2;
int i = 42;
int *pi = ptr2(&i, ptr1);
printf("%d\n", *pi);
return 0;
}
// prints 52
Run Code Online (Sandbox Code Playgroud)
cdecl 是你的朋友:
$ cdecl explain 'int * (*x) (int * , int * (*)())'
declare x as pointer to function (pointer to int, pointer to function returning pointer to int) returning pointer to int
Run Code Online (Sandbox Code Playgroud)