14
可能性の重複:
How does dereferencing of a function pointer happen?関数ポインタ - 自動間接参照
void myprint(char* x) {
printf("%s\n", x);
}
int main() {
char* s = "hello";
void (*test)(char*);
void (*test2)(char*);
test = myprint;
test2 = &myprint;
test(s);
(*test)(s);
test2(s);
(*test2)(s);
}
上記のコードのすべてが有効である理由を誰も私に説明できますか? 「こんにちは」が4回印刷されます。関数ポインタを適用することによって、それは暗黙のうちにderefencedされますか?基本的に私は関数ポインタが実際にどのように格納されているのか知りたいのですが、上記は混乱するためです。
'(******テスト)(S)' – sidyll
は、この前の質問を参照してください:-)も有効です。http://stackoverflow.com/questions/2795575/how-does-dereferencing-of-a -function-pointer-happens –
関数と関数ポインタは特別なものであり、他の種類のポインタとの統一的ではありません。 [関数ポインタの逆参照はどのように起こるのですか?](http://stackoverflow.com/q/2795575/2509)とその他の質問はサイドバーにあります。 – dmckee