int foo(char *c) {...}
main() {
int (*thud)(void *);
thud = (int (*)(void *))(foo);
}
課題の評価では、実際に何が行われますか?
foo
キャスト型と;には違いがあります。キャスト型はポインタでfoo
あり、関数です。では、コンパイラは ' (foo)
' の内容をポインタに変換しfoo
てからキャストを行うのでしょうか? 他に意味がないように見えるからです。もう1つのオプションは、関数自体が を取得してを返す関数へのポインターに変換されることです。私が知る限り、関数はメモリ内のコードのラベルであるため、ポインターになることはできません。変数。void*
int