私はCのコードのこの部分を持っている:Cでこのフォームが正しい理由は?
void f(void *x) {
printf(">>> %p\n", x);
}
int main() {
f NULL;
return 0;
}
私が考えるには、NULLの定義についてですが、私は私の疑問を明確に説明したいと思います。
私はCのコードのこの部分を持っている:Cでこのフォームが正しい理由は?
void f(void *x) {
printf(">>> %p\n", x);
}
int main() {
f NULL;
return 0;
}
私が考えるには、NULLの定義についてですが、私は私の疑問を明確に説明したいと思います。
NULL
が((void *)0)
又は(0)
として定義されている場合、これは適切な関数呼び出しである、f ((void *)0)
またはf (0)
に展開。コンパイル中にカッコで囲まれていないものについては、コードエラーが出力されます。次のようにC NULL
で
私はdownvoted、それは "朝の朝"の瞬間だったことに気づいた後、私のdownvoteを削除... –
@ JohannesSchaub-litbああ、OK。そうですか。 –
ありがとうございます。 – Kyrol
は、多くの場合、定義されています
#if !defined(NULL)
#define NULL ((void*)0)
#endif
このような場合は、その後NULL
だけで特別なポインタで、あなたの例では、動作します。
ここで、あなたはちょうどいいのですか? –
iircのNULLは#defineされた((void *)0)ので、コピーされたときには関数 – Daboyzuk
のパラメータとして働くf((void *)0)が最初に表示されますフォーム 'f NULL'のようなものです。 – Kyrol