あなたはfoo
のアドレスを取得し、int
へのポインタにキャストします。
foo
とp
の型が異なる場合、コンパイラは型の不一致に関する警告を出すことがあります。キャストは、その警告を抑えることです。例えば
、コンパイラ(initialization from incompatible pointer type
)から警告を引き起こす次のコード、検討:foo
ここ
float foo = 42;
int *p = &foo;
をint
にp
点ながら、float
あります。明らかに - 異なるタイプ。
typecastingは、1つの変数を別の型のものとして扱います。新しい型名を括弧で入れて型キャストします。ここでは、int
へのポインタのように扱われることをfloat
へのポインタを行いますと、警告はもうできなくなります。
float foo = 5;
int *p = (int*)(&foo);
あなたにも括弧のペアを1つ省略していたかもしれないと、それは同じことを意味したい:
float foo = 5;
int *p = (int*)&foo;
foo
が機能の場合は同じです。代入の右側の関数へのポインタと、左側のint
へのポインタがあります。 int
のアドレスとして扱われる関数へのポインタを作るために、キャストが追加されます。
関数の型は、返される変数の型を意味しますか? – TheLogicGuy
機能はありません!私は自分の答えを広げたので、今はもっと明らかになっています。 – lukeg
しかし、 'foo'は変数ではない関数だと考えてください。今はどうしていますか? – TheLogicGuy