詳細なC言語の関数のmemset
memsetのアクション() :一般的に使用される期間メモリブロックに与えられた値を、充填配列を初期化し、アレイがクリアされます。
これは、ダイレクト・メモリ・オペレーション、MEMすなわち「メモリ」(メモリ)を意味します。この関数のプロトタイプは次のとおりです。
#は、<含まれた文字列・H> ボイド *のmemset(ボイド * S、int型の C、符号なしのロング n)を、
関数機能:「整数」を有するメモリセルの最初のnバイトの変数Sへのポインタポイントはまた、そのCがintであることに注意cは。sがvoid型*ポインタ変数である、それは任意のタイプのデータを初期化することができます。
memsetの()関数の説明:
memsetの一般的な使用「0」がメモリセルを初期化し、そして通常配列または構造には、初期化されます。一般的な変数は、CHAR、INT、フロート、ダブルなどとして、変数は直接初期化することができている、のmemsetを使用する必要はありません。memsetの言葉しかし、もしトラブルに見えました。
もちろん、配列を直接初期化することができ、それが動作しているので、それは、直接メモリ配列や構造、より大きな体を初期化のmemsetをクリアする最速の方法です。
そして、誰かが尋ねます:「文字列配列は、最高使用『\ 0』は、パラメータcが『\ 0』が???に割り当てることができmemsetをしている文字列配列を初期化することができるので、それを初期化しない」
ことができますA。要件パラメータcは整数、整数や文字であるが、相互接続されているが。しかし、割り当てが「\ 0」であり、メモリ内の文字「\ 0」0であるため、0は、等価です。だから、0に初期化memsetの終了識別子はまた、「\ 0」の役割を持っているので、我々は通常、「0」を書きます
パラメータnの第3の値は、一般的にので、より多くの専門家はsizeof()取得とのmemsetの関数です。ポインタ変数のポイントのメモリユニットは、初期設定をクリアした場合、その最初のそれは有効なアドレスを指すようにしなければなりませんポインタ変数を初期化してくださいことに注意してください。このようなメモリセルは、Pのmemsetは、ポインタ変数で初期化することによって指さ場合など、nはしばしば初心者間違いである、はsizeof(p)を書きません。pは関係なく、ポインタ変数、ないので、はsizeof(P)の値は、4変数pポイントの種類です。
プログラム例:
含める#<stdio.hに> ザには、# < 文字列・H> INTメイン(ボイド) { int型 I; // ループ変数 チャー STR [ 10 ]; CHAR * P = STR; のmemset(STR、0、はsizeof(STR)) ; // のみのsizeof(P)を書き込むことができない、はsizeof(STR)を書く ための(I = 0 ;私は< 10 ; ++ I) { のprintf(" X20の%Dの\ " 、STR [I]); } のprintf(" N-を\ "); リターン 0 ; }
memsetの機能によって、出力は次のような状況に分け、異なる: のmemset(P、0、はsizeof(P)); // アドレスのサイズは4バイトで 0 0 0 0 - 52れている - 52である - 52れます - 52である - 52である - 52である のmemset(P、0、はsizeof(* P)); // * P、文字変数で表される唯一のバイト 0 - 52である - 52である - 52である - 52である - 52である - 52である - 52であります - 52 - 52 のmemset(P-、0、はsizeof (STR)); 0 0 0 0 0 0 0 0 0 0 のmemset(STR、0、はsizeof (STR)); 0 0 0 0 0 0 0 0 0 0 のmemset(P、0、10); / / 直接、書き込み10 OK、しかし、プロではない 0 0 0 0 0 0 0 0 0 0