C言語学習ポータル(無料版) 学習コンテンツ 関数リファレンス memset

🔧 文字列 ・ string.h ・ C89

memset の使い方

C言語 標準ライブラリ関数リファレンス(無料公開)

書式

void *memset(void *s, int c, size_t n);

どんな関数か

メモリ領域の各バイトを指定した値で埋める。配列やバッファのゼロクリア、構造体の初期化など、あらゆる場面で使われる定番関数。第2引数はint型だが下位1バイトのみが使われる。 構造体全体を一括で0クリアして未初期化フィールドを無くす初期化パターンで非常によく使われる。

使用例

#include <string.h>
#include <stdio.h>
int main(void) {
    int arr[5];
    memset(arr, 0, sizeof arr);
    printf("%d\n", arr[0]);
    return 0;
}

つまずきやすい注意点

⚠️ int配列を0以外の値で埋めても、1バイト単位で埋めるためint全体としての意図した値にはならない(0と-1以外は注意)。

アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ

memset と一緒に使う関数

memcpyメモリ領域を指定バイト数だけコピーする。文字列に限らずあらゆるデータのコピーに使えstrcpyより高速だが、終端\0の概… memset_explicitmemsetと同様にメモリを指定値で埋めるが、コンパイラの最適化によって「無駄な書き込み」として消去されないことが保証さ…

同じ分類(文字列)の関数

memcmp memcpy memmove memset_explicit strcat strchr strcmp strcoll strcpy strcspn strdup strerror strlen strncat strncmp strncpy

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る