C - 指向返回字符串函数的指针函数的指针数组
问题描述:
我最近在C中发现函数指针,并试图让它工作正常,但我只是把我的头发拉到这里!C - 指向返回字符串函数的指针函数的指针数组
我有一个指针,返回一个字符串的函数:
(char *) (*)() (*bar)().
但我要的6个指针数组此功能,但我不能得到它的工作。
我不断收到编译器错误可能与括号的东西它真的很混乱。我试过这样的东西,但不起作用:
(((char)(*))((*))(((*)((foo))))([(6)]));
我需要帮助做这个数组我做错了什么?
答
这是你如何定义一个指针函数返回一个字符串:
(char *) (*myFuncPtr)() = myFunc
阵:
(char *) (*myFuncPtr[6])();
myFuncPtr[0] = myFunc
等等
+0
谢谢你的帮助,我测试过它效果不错!像@Krishnabhadra这样的人甚至不尊重有人可以成为初学者,如果这个网站上的人是如此傲慢,他不想参加这里:( – mathuvusalem 2012-04-24 00:58:47
答
它看起来并不像你最初的例子是有效的。要定义返回指向字符数组的指针的函数指针f
,应该使用以下语法。
char* (*f)() = &func1
如果你想一个函数指针数组,使用下面
char* (*arrf[6])() = { &func1, &func2, &func3, &func4, &func5, &func6 }
语法这里也是一个useful old course handout链路上的函数指针。
答
按照giorashc's answer或使用一个简单的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;
}
你是什么意思**你发现...... **? – Parag 2012-04-23 07:17:50
你能澄清一下“*我想要一个6个指针的数组来运行这个*”吗? – cnicutar 2012-04-23 07:18:54
char *(* fun [6])(void)?您的原始“指向函数返回字符串的指针”已错误 – hroptatyr 2012-04-23 07:18:57