C言語 バッファを指定した値で設定 - string.h - [ memset ]

2008.11.25 Tuesday | by LRESULT


ッファを指定した値で設定(初期化)するには、memset()を使います。


memset
書式 void* memset( void *s, int c, size_t n )
機能 バッファを指定した値で設定
引数 void *s : 設定対象のバッファ
int c : 設定する値
size_t n : 設定バイト数
戻り値 設定対象のバッファ(s)を返します。

バッファサイズを超えるような、バイト数(n)を指定すると
  メモリ破壊を起こすので注意が必要です。
memset()は、構造体や配列の初期化に使われることが多いです。





サンプルコード
配列要素が10個あるint型配列の、初期化前の状態と
memset()による初期化後(0クリア)の状態を比較してみます。
#include <stdio.h>
#include <string.h>

int main(void)
{
  int s[10];
  int i;

  printf( "初期化前の状態¥n" );
  for( i=0; i<10; i++ ){
    printf( "%d¥n", s[i] );
  }

  memset( s, 0, sizeof(int) * 10 );

  printf( "初期化後の状態¥n" );
  for( i=0; i<10; i++ ){
    printf( "%d¥n", s[i] );
  }

  return 0;
}



結果
初期化前の状態
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
初期化後の状態
0
0
0
0
0
0
0
0
0
0
と、表示されます。

初期化前は、不定の値が入っていますが
memset()を使った初期化後は、きっちり0クリアされています。

カテゴリ:C言語 string.h | 23:30 | comments(0) | trackbacks(0) | -


コメントする











この記事のトラックバックURL

http://simd.jugem.jp/trackback/143

トラックバック