memset関数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
オレンジ

memset関数について

#1

投稿記事 by オレンジ » 15年前

龍神録を参考にDXライブラリを使ってSTGを作っているのですが
10章の中で出てくるmemset関数の意味がわかりません
初期化をする関数、というのはわかるのですが、なぜ搭載されているのかがわかりません
回答よろしくお願いします

ちゃお

Re:memset関数について

#2

投稿記事 by ちゃお » 15年前

初期化してなかったらエラー起こるから。

たとえば、
#include<stdio.h>

int main(void)
{
int a,b,c;

c = a + b; //a,bを初期化せずにcに代入

printf("%d",c);
return 0;
}
とかしたときに
aとbに値を入れてないのに計算してしまうとおかしな数字が出る(エラーを引き起こす)。

C言語プログラミングにおける基礎だと思います。
だから、初期化しないとだめってこと。

オレンジ

なるほどなるほど

#3

投稿記事 by オレンジ » 15年前

わかりました
初期化って大事ですね
ではmemset関数ってどうやって使うんですか?
それと、判例でよくあるsizeof演算子の意味もよろしくお願いします

tk

Re:なるほどなるほど

#4

投稿記事 by tk » 15年前

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)



まだ分からないことがあればリファレンスなり見てください。
以上です。

閉鎖

“C言語何でも質問掲示板” へ戻る