我最近在C中發現函數指針,並試圖讓它工作正常,但我只是把我的頭髮拉到這裏!C - 指向返回字符串函數的指針函數的指針數組
我有一個指針,返回一個字符串的函數:
(char *) (*)() (*bar)().
但我要的6個指針數組此功能,但我不能得到它的工作。
我不斷收到編譯器錯誤可能與括號的東西它真的很混亂。我試過這樣的東西,但不起作用:
(((char)(*))((*))(((*)((foo))))([(6)]));
我需要幫助做這個數組我做錯了什麼?
我最近在C中發現函數指針,並試圖讓它工作正常,但我只是把我的頭髮拉到這裏!C - 指向返回字符串函數的指針函數的指針數組
我有一個指針,返回一個字符串的函數:
(char *) (*)() (*bar)().
但我要的6個指針數組此功能,但我不能得到它的工作。
我不斷收到編譯器錯誤可能與括號的東西它真的很混亂。我試過這樣的東西,但不起作用:
(((char)(*))((*))(((*)((foo))))([(6)]));
我需要幫助做這個數組我做錯了什麼?
這是你如何定義一個指針函數返回一個字符串:
(char *) (*myFuncPtr)() = myFunc
陣:
(char *) (*myFuncPtr[6])();
myFuncPtr[0] = myFunc
等等
謝謝你的幫助,我測試過它效果不錯!像@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