ページ 1 / 1
memset関数について
Posted: 2010年3月09日(火) 23:21
by オレンジ
龍神録を参考にDXライブラリを使ってSTGを作っているのですが
10章の中で出てくるmemset関数の意味がわかりません
初期化をする関数、というのはわかるのですが、なぜ搭載されているのかがわかりません
回答よろしくお願いします
Re:memset関数について
Posted: 2010年3月09日(火) 23:47
by ちゃお
初期化してなかったらエラー起こるから。
たとえば、
#include<stdio.h>
int main(void)
{
int a,b,c;
c = a + b; //a,bを初期化せずにcに代入
printf("%d",c);
return 0;
}
とかしたときに
aとbに値を入れてないのに計算してしまうとおかしな数字が出る(エラーを引き起こす)。
C言語プログラミングにおける基礎だと思います。
だから、初期化しないとだめってこと。
なるほどなるほど
Posted: 2010年3月11日(木) 04:51
by オレンジ
わかりました
初期化って大事ですね
ではmemset関数ってどうやって使うんですか?
それと、判例でよくあるsizeof演算子の意味もよろしくお願いします
Re:なるほどなるほど
Posted: 2010年3月11日(木) 09:37
by tk
memsetは以下の通りです。(MSDNライブラリより)
void *memset( void *dest, int c, size_t count );
dest : 対象となるバッファへのポインタ
c : 設定する文字
count : 文字数
destの最初からcount分、cで初期化するものです。
例)
char str[10];
memset( str, '\0', sizeof( str ) );
これでstrはすべて\0で初期化されます。
ここでsizeof演算子ですが、これはsizeofに渡された型や変数のメモリサイズを調べるものです。
例)
sizeof( char ); // charのサイズ(=1)
sizeof( int ); // intのサイズ
sizeof( double ); // doubleのサイズ(=8)
sizeof( str ); // 上記の例のstr(char10個の配列なので =10)
まだ分からないことがあればリファレンスなり見てください。
以上です。