-1

我最近在 C 中发现了函数指针,我正试图让它正常工作,但我只是在这上面扯头发!!!

我有一个指向返回字符串的函数的指针:

(char *) (*)() (*bar)().

但是我想要一个包含 6 个指针的数组来运行它,但我无法让它工作。

我不断收到编译器错误,可能带有括号的东西真的很乱。我已经尝试过这样的事情但不起作用:

(((char)(*))((*))(((*)((foo))))([(6)]));

我需要帮助来做这个数组我做错了吗?

4

3 回答 3

2

这是您如何定义指向返回字符串的函数的指针:

(char *) (*myFuncPtr)() = myFunc

大批 :

(char *) (*myFuncPtr[6])();

myFuncPtr[0] = myFunc

ETC...

于 2012-04-23T07:19:16.377 回答
1

按照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;
}

Ideone 演示

于 2012-04-23T07:20:52.447 回答
0

看起来您的初始示例无效。要定义f返回指向字符数组的指针的函数指针,应使用以下语法。

char* (*f)() = &func1

如果你想要一个函数指针数组,请使用下面的语法

char* (*arrf[6])() = { &func1, &func2, &func3, &func4, &func5, &func6 }

这里还有一个关于函数指针的有用的旧课程讲义的链接。

于 2012-04-23T07:20:40.527 回答