int (*rdPtrList[4])(unsigned int addr, unsigned int data);
上面的代码声明了一个大小为4的指针数组,用于存储返回int类型且接受两个unsigned int参数的函数的指针。我想创建一个指向这个数组的指针。在C语言中是否可以实现这一点?
为了阅读方便,以下省略参数:
p -- p *p -- 是一个指针 (*p)[4] -- 指向一个 4 元素数组 *(*p)[4] -- 再指向指针的数组 (*(*p)[4])() -- 指向函数的指针 int (*(*p)[4])(); -- 返回 int 的函数指针。
int (*(*rdPtrList)[4])(unsigned int addr, unsigned int data);
因为编译器告诉我 _countof(*rdPtrList)
是4。
(我希望你可以像在D语言中一样只需说出 int function(unsigned int addr, unsigned int data)[4]*
,这样更易读:它将成为"函数数组指针"。)
试试这个:
typedef int(*rdPtrList_t[4])(unsigned int addr, unsigned int data);
rdPtrList_t *ptrToArray;
ptr_to_fixed_length_function_array = &array_of_functions;
。如果类型不正确,则编译器应该就此发出警告。 - Theodore Murdock