#navi(../)
* メモリの内容を指定した値で初期化する・memset [#o9589825]
指定したメモリ番地から指定したサイズ分を指定した値で初期化するmemset関数のC言語サンプルソースを以下に記します。

#contents
#htmlinsertpcsp(c-top.html,c-sp.html)

*関連記事 [#l8b52abc]
-[[メモリの内容を指定した値で初期化する・memset>メモリ/メモリの内容を指定した値で初期化する・memset]]
-[[メモリ内容をコピーする・memcpy>メモリ/メモリ内容をコピーする・memcpy]]
-[[構造体の内容をコピーする・memcpyは使わない!>メモリ/構造体の内容をコピーする・memcpyは使わない!]]
-[[メモリの比較を行う・memcmp>メモリ/メモリの比較を行う・memcmp]]
-[[動的にメモリを取得する・malloc>メモリ/動的にメモリを取得する・malloc]]
-[[動的メモリサイズを拡張する・realloc>メモリ/動的メモリサイズを拡張する・realloc]]
-[[malloc,calloc,reallocで取得したメモリを解放する・free>メモリ/malloc,calloc,reallocで取得したメモリを解放する・free]]
-[[指定した文字数分コピーする・memmove>メモリ/指定した文字数分コピーする・memmove]]
-[[指定したバイトの指定個数分メモリを確保する・calloc>メモリ/指定したバイトの指定個数分メモリを確保する・calloc]]

* memsetの書式等 [#uea32945]
-必要なインクルードファイル
 #include <string.h>
-memsetの書式
 void *memset(void *s, int c, size_t n);
-戻り値~
なし
-引数~
1つ目: 初期化する先頭番地(バッファのポインタになると思います。)~
2つ目: 初期化する値~
3つ目: 初期化するサイズ

* memsetを使用したC言語サンプルコード [#x5bb3e92]
以下にmemsetを使用して初期化前、0で初期化後、123で初期化後の実行例を記します。
&ref(memset.c); (改行コードLF)

 #include <stdio.h>
 #include <string.h>
 
 struct INT_MEMBERS {
     int a;
     int b;
     int c;
 };
 
 int main(void)
 {
     struct INT_MEMBERS int_members;
     printf("int_members.a = %d\n", int_members.a);
     printf("int_members.b = %d\n", int_members.b);
     printf("int_members.c = %d\n", int_members.c);
 
     printf("memset(&int_members, 0, sizeof(int_members))\n");
     memset(&int_members, 0, sizeof(int_members));
     printf("int_members.a = %d\n", int_members.a);
     printf("int_members.b = %d\n", int_members.b);
     printf("int_members.c = %d\n", int_members.c);
 
     printf("memset(&int_members, 123, sizeof(int_members))\n");
     memset(&int_members, 123, sizeof(int_members));
     printf("int_members.a = %d\n", int_members.a);
     printf("int_members.b = %d\n", int_members.b);
     printf("int_members.c = %d\n", int_members.c);
 
     return 0;
 }

以下に上記のC言語サンプルコードをコンパイルし実行した時の出力を記します。
 $ gcc memset.c -o memset
 $ ./memset 
 int_members.a = -1216453232
 int_members.b = 134514091
 int_members.c = -1216614412
 memset(&int_members, 0, sizeof(int_members))
 int_members.a = 0
 int_members.b = 0
 int_members.c = 0
 memset(&int_members, 123, sizeof(int_members))
 int_members.a = 2071690107
 int_members.b = 2071690107
 int_members.c = 2071690107

初期化した値の0になっていることが確認できます。~
しかし、123で初期化した値は期待した123になっていません。~
これはバイト単位で123という値がセットされるためです。~
使用するときは注意しましょう。

以上、memsetのC言語サンプルコードと実行例でした。

#htmlinsertpcsp(c-btm.html,c-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS