2012-03-06 22 views
0

私はmemcpy関数を使いました。私はそれを下に貼り付けた。誰かがそれを説明するのを助けてくれますか?私はなぜ(void *)ののか分からない。バッファは、構造体BLK内のバッファです。ありがとう。memcpy疑問。明確化が必要

memcpy(  
       (void *) (BLK->buffer + left), 
       (void *) input, 
       fill    
     ); 

答えて

1

キャストの必要はinputBLK->bufferはすでに(彼らは本当にする必要があります)ポインタ型であると仮定すると、ありません。

私は、彼らがそこにいる理由は二つの理由を考えることができます。

  • 著者は偏執的でした。
  • 著者は、特定のポインタ型が「汎用」関数になることを理解していることを明確にしていました。
+3

もしそれらがポインタでないなら、あなたは間違いなく何か間違いをしているでしょう。この場合、キャストは問題を隠します。 –

+1

追加の箇条書き:著者はC++、Microsoft、および/またはHerb Schildtに混乱しました。 – wildplasser

+0

ありがとうございます。 –

0
void *memcpy(void *dest, const void *src, size_t n); 

*著者からボイドへのオブジェクトポインタをキャストし、コンパイラはCで

:-)その仕事をして、エラーをしないということは非常に確かになりたいと思ったかもしれません必要です。 関数へのポインタは別のものです。

関連する問題