3

次の 2 つのステートメントの違いは何ですか?

char *(*myfunc1)(char*, int)
char *myfunc2(char*, int)

2 番目のステートメントは、char へのポインターと int を受け取り、char へのポインターを返す関数を定義していることを知っています。char (*myfunc2)(char*, int)また、 が char を返すことも知っています。*最初のステートメントの余分な意味は何ですか?

4

4 に答える 4

5

最初のものは関数へのポインタを定義し、2番目のものは関数です....

あなたができるように...myfunc1 = myfunc2

関数のように見えるが、関数の名前が void (*blah)( void ) のように * で囲まれている場合はいつでも、関数へのポインターを定義していることを意味します。

于 2013-02-02T22:54:59.913 に答える
2

質問に答えました。見たことのない人のために、この非常に便利なサイトを紹介したいと思います。それはあなたの答えを持っています。

于 2013-02-02T23:03:12.457 に答える
1

*最初のステートメントの extraは、ポインタmyfunc1が を返す関数へのものであることを意味しますchar *

そう:

char *(*func1)(char*, int)  // pointer to a function that returns 'char*'
char (*func2)(char*, int)   // pointer to a function that returns 'char'
于 2013-02-02T22:56:15.890 に答える
1

最初のケースでは、char * 変数を返す関数ポインター myfunc1 を定義します。2 番目のケースでは、char * 変数を返す関数ポインターではなく、関数を定義します。

関数ポインターには、関数名 (*name) を括弧で囲む必要があります

于 2013-02-02T23:03:45.793 に答える