-1

私は最近、C で関数ポインターを発見しました。それをうまく機能させようとしていますが、これについては髪を引っ張っているだけです!!!

文字列を返す関数へのポインターがあります。

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

しかし、これで機能する6つのポインターの配列が必要ですが、機能しません。

おそらくかっこでコンパイルエラーが発生し続けますが、これは本当に面倒です。私はこのようなことを試しましたが、うまくいきません:

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

この配列を実行するには助けが必要ですか?何か間違っていますか?

4

3 に答える 3

2

これは、文字列を返す関数へのポインターを定義する方法です。

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

配列 :

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

myFuncPtr[0] = myFunc

等...

于 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;
}

イデオネのデモ

于 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 に答える