Project_OKI’s diary

エンジニアの勉強ブログ

C言語基礎知識22(memset関数による配列の初期化)

memset関数による配列の初期化する

 

C言語入門】

 memset関数の使い方と配列初期化のコツを解説!


「memset関数」とは、C言語C++言語において配列を初期化するための関数です。

 この記事では、memset関数の概要や使い方を詳しく解説し、

 具体的なプログラムの作成方法を紹介します。

   また、配列及びsizeofについても触れているので、あわせて参考にしてみてください。

 

1.目的

  • memsetについて理解する。
  • memsetの使い方について学習する。

 

目次

2. memset関数とは

 ・C言語C++言語で定義されている標準ライブラリ関数

 ・メモリ領域に指定した値を設定する為の関数。

 

3. memset関数の使い方

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

 s: 初期化対象となる変数(配列)を指定する
 c: 初期化に用いる値(char型の場合、整数値にキャストされる)
 n: 初期化対象となる要素数

 

4. プログラムの作成(memsetを使用して配列を初期化)

#include        <stdio.h>   //printfを使用する為にインクルード
#include        <string.h>  //memsetを使用する為にインクルード

int main(void)
{
    char num[] = "0123456789";      //文字列"0123456789"を配列numに格納
    char num2[] = "0123456789";     //文字列"0123456789"を配列num2に格納
    int num3[8];                    //要素数8のint型配列num3を宣言
    int num3elc = sizeof(num3)/sizeof(num3[0]); //num3の要素数を計算してnum3elcに格納 
         
    memset(num,'x',sizeof(num));    //numに含まれる全ての要素を'x'で埋める
    memset(num2+2,'x',3);           //num2[2]から3要素を'x'で埋める
    memset(num3,0,sizeof(num3));    //num3に含まれる全ての要素を0で埋める
    //memset(num3,2,sizeof(num3));  //これは出来ない。
    
    printf("num1=%s\n",num);        //numを出力
    printf("num2=%s\n",num2);       //num2を出力

    //num3の値を出力
    for (int i = 0; i < num3elc; i++) {
        printf("num3[%d]=%d\n",i,num3[i]);
    }
    return 0;
}

 結果:https://paiza.io/projects/ZRchx8RPMrSNQlpfALSX-g

 

 配列及びsizeofについては下記記事を参照

 C言語基礎知識3(配列) - Project_OKI’s diary

 

関連記事

過去の記事:

知らないと損するお金の話(ふるさと納税、確定申告とワンストップ納税どっちが得?) - Project_OKI’s diary

C言語基礎知識6(関数) - Project_OKI’s diary

C言語基礎知識7(構造体1) - Project_OKI’s diary

C言語基礎知識8(enum:列挙型) - Project_OKI’s diary

C言語基礎知識9(typedef) - Project_OKI’s diary

C言語基礎知識10(extern宣言) - Project_OKI’s diary

C言語基礎知識11(#define) - Project_OKI’s diary

 

組み込みC言語