C言語の関数は配列を入力として受け取り、someonesは配列のNULLを渡します。関数がarray [0]または任意の数値を返した場合、何が返されますか? 0?ヌル?配列[0]で数学や他のことをしようとすると同じですか?最も重要なのは、NULL配列が渡された場合、どうすれば関数チェックを行うことができるのでしょうか?CのNULL配列には実際に何が入っていますか?
答えて
この場合、array[0]
にアクセスするとNULLポインタが逆参照されます。これは未定義の動作です(ほとんどの場合、プログラムがクラッシュする)。
あなたはNULLポインタを渡されてきた場合は、単にNULLとarray
を比較することで確認できます。
if(array == NULL) {
return 0;
} else {
return array[0];
}
この実装が意味を成すAPIは完全な設計災害であると指摘する価値はあります。 –
@KerrekSBは同意しない。例えばヌルポインタが0で埋められた配列と同じように動作するように定義することができます –
@ M.M:あなたは私の主張をしていると思います。 :-) –
あなたは、メモリ位置0
から行われますarray[0]
の読み出し、NULL (0)
ようにポインタを渡す場合。あなたのケースでは
data = *(type_of_pointer *)(array + key * sizeof(type_of_pointer));
:
data = *(type_of_pointer *)(0 + 0 * sizeof(type_of_pointer));
だからあなたの読書は、メモリ位置0
から行われることになる配列[0]と0[array]
同じものであるので、あなたはこのようなメモリ位置と考えることができます。ほとんどの場合、プログラムがクラッシュしますが、一般的には未知の動作です。
array[5]
を読むと、これを行うだろう:あなたが唯一のポインタを渡すことができますC.に関数のパラメータとして配列を渡すことはできません
data = *(type_of_pointer *)(array + 5 * sizeof(type_of_pointer));
その場合、 'array [0]'の読み込みは未定義の動作です。ほとんどのシステムでは、メモリ位置0を読み込もうとしません。 –
真実ですが、私は一般的な答えを出しました。 – tilz0R
- 1. toString.call(配列)は実際に何をしていますか?
- 2. lwzでは実際に何が起こっていますか?
- 3. 実際にC#WinFormsではない列はnullと言われています
- 4. LLBLGEN関連配列が実体に入っていません
- 5. 何が私の配列に間違っていますか?
- 6. iOSアプリのアップデート中に実際に何が起こっていますか?
- 7. 実際にユーザー入力を待っているプロセスには何が起こりますか?
- 8. 配列の配列が入れ子になっていない
- 9. は、実際にはイメージビューがnullに設定されていますか?
- 10. メモリは実際にC配列をどのように探しますか?
- 11. jQueryが何かを指示してくれていないときに配列に入っています
- 12. Ruby:unpack( "C")は実際に何をしていますか?ドキュメントから
- 13. HashMapのテーブル配列の実際のインデックスは何ですか?
- 14. 私のコードで何が間違っていますか? (C++配列)
- 15. 結果が配列に入れ子になっています
- 16. javascript配列は実際に配列として実装されていますか?
- 17. 私の入力ファイルの番号が配列C++に入っていないのはなぜですか?
- 18. jarファイルには正確に何が入っていますか?
- 19. ivarには何が入っていますか?ヘッダファイルに
- 20. obj .__ closure__には正確に何が入っていますか?
- 21. EventMachineスレッドとRubyスレッド - 実際に何が起こっていますか?
- 22. MAEは実際に私に何を教えていますか?
- 23. 逆配列C++?私は間違って何をしていますか?
- 24. Zend Installationのphp.iniには何が入っていますか?
- 25. マージソートアルゴリズムで実際に何個の配列が作成されているのか分かりません。
- 26. これは実際に何をしていますか? - Crazy C++ function
- 27. この機能は実際に何をしていますか?
- 28. Googleクロージャのtypedefは実際に何をしていますか?
- 29. この構造は実際に何をしていますか?
- 30. NSStringのisLikeは実際に何をしていますか?
。ポインタの値をチェックするには、 'if'文を使います。 –
@KerrekSBああ、意味があります。私はまだポインタに慣れています。ポインタが "NULL"に等しいかどうかを確認することはできません。したがって、ゼロに等しいかどうかをチェックすれば同じことになりますか? – Clotex
あなたのテキストブックを読んでください。あなたは間違いなく 'NULL 'とポインタを比較できるはずですが、おそらく' #include 'を忘れてしまいました。 –