次の 2 つのステートメントの違いは何ですか?
char *(*myfunc1)(char*, int)
char *myfunc2(char*, int)
2 番目のステートメントは、char へのポインターと int を受け取り、char へのポインターを返す関数を定義していることを知っています。char (*myfunc2)(char*, int)
また、 が char を返すことも知っています。*
最初のステートメントの余分な意味は何ですか?
最初のものは関数へのポインタを定義し、2番目のものは関数です....
あなたができるように...myfunc1 = myfunc2
関数のように見えるが、関数の名前が void (*blah)( void ) のように * で囲まれている場合はいつでも、関数へのポインターを定義していることを意味します。
質問に答えました。見たことのない人のために、この非常に便利なサイトを紹介したいと思います。それはあなたの答えを持っています。
*
最初のステートメントの 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'
最初のケースでは、char * 変数を返す関数ポインター myfunc1 を定義します。2 番目のケースでは、char * 変数を返す関数ポインターではなく、関数を定義します。
関数ポインターには、関数名 (*name) を括弧で囲む必要があります