我最近在 C 中发现了函数指针,我正试图让它正常工作,但我只是在这上面扯头发!!!
我有一个指向返回字符串的函数的指针:
(char *) (*)() (*bar)().
但是我想要一个包含 6 个指针的数组来运行它,但我无法让它工作。
我不断收到编译器错误,可能带有括号的东西真的很乱。我已经尝试过这样的事情但不起作用:
(((char)(*))((*))(((*)((foo))))([(6)]));
我需要帮助来做这个数组我做错了吗?
这是您如何定义指向返回字符串的函数的指针:
(char *) (*myFuncPtr)() = myFunc
大批 :
(char *) (*myFuncPtr[6])();
myFuncPtr[0] = myFunc
ETC...
按照giorashc 的回答或使用简单的typedef
:
#include <stdio.h>
typedef const char * (*szFunction)();
const char * hello(){ return "Hello";}
const char * world(){ return "world";}
const char * test(){ return "test";}
const char * demo(){ return "demo";}
const char * newline(){ return "\n";}
const char * smiley(){ return ":)";}
int main()
{
unsigned int i = 0;
szFunction myFunctions[6];
myFunctions[0] = hello;
myFunctions[1] = world;
myFunctions[2] = test;
myFunctions[3] = demo;
myFunctions[4] = newline;
myFunctions[5] = smiley;
for(i = 0; i < 6; ++i)
printf("%s\n",myFunctions[i]());
return 0;
}
看起来您的初始示例无效。要定义f
返回指向字符数组的指针的函数指针,应使用以下语法。
char* (*f)() = &func1
如果你想要一个函数指针数组,请使用下面的语法
char* (*arrf[6])() = { &func1, &func2, &func3, &func4, &func5, &func6 }
这里还有一个关于函数指针的有用的旧课程讲义的链接。