どうも、ちょげ(@chogetarou)です。
配列(array)を同じ値で初期化する方法を紹介します。
方法

配列(array)を同じ値で初期化する方法は、2つあります。
ループ
ひとつは、ループを使う方法です。
まず、要素数を指定して配列を宣言します。
宣言した配列のインデックスをループします。
そして、ループ処理で、配列の全てのインデックスの要素に値を代入します。
//T=要素の型, myArray=配列名, length=要素数, value=値
T myArray[length];
int n = sizeof(myArray) / sizeof(myArray[0]);
for (int i = 0; i < n; i++) {
myArray[i] = value;
}
//whileの場合
T myArray[length];
int n = sizeof(myArray) / sizeof(myArray[0]);
int i = 0;
while (i < n) {
myArray[i] = value;
++i;
}
上記のループは、配列を全て同じ値で初期化します。
使用例
#include <stdio.h>
int main(void){
char myArray[5];
int n = sizeof(myArray) / sizeof(myArray[0]);
for (int i = 0; i < n; i++) {
myArray[i] = 'a';
}
for (int i = 0; i < n; i++) {
printf("%c,", myArray[i]);
}
return 0;
}
出力:
a,a,a,a,a,
使用例2
#include <stdio.h>
int main(void){
char myArray[5];
int n = sizeof(myArray) / sizeof(myArray[0]);
int i = 0;
while (i < n) {
myArray[i] = 'w';
++i;
}
for (int i = 0; i < n; i++) {
printf("%c,", myArray[i]);
}
return 0;
}
出力:
w,w,w,w,w,
memset() (*Char型の配列限定)
もうひとつは、memset()を使う方法です。
まず、要素数を指定した配列を宣言します。
次に、memset()を呼び出します。
memset()の第1引数に対象の配列、第2引数に値、第3引数にsizeof()を指定します。
そして、sizeof()の引数に、宣言した配列を指定します。
//T=要素の型, myArray=配列名, length=要素数, value=値
T myArray[length];
memset(myArray, value, sizeof(myArray));
上記のmemset()は、Charの配列を同じ値で初期化します。
使用例
#include <stdio.h>
int main(void){
char myArray[5];
memset(myArray, 'g', sizeof(myArray));
int n = sizeof(myArray) / sizeof(myArray[0]);
for (int i = 0; i < n; i++) {
printf("%c,", myArray[i]);
}
return 0;
}
出力:
g,g,g,g,g,
まとめ
配列(array)を同じ値で初期化する方法は、次の2つです。
- ループを使う方法
T myArray[length];
int n = sizeof(myArray) / sizeof(myArray[0]);
for (int i = 0; i < n; i++) { myArray[i] = value; }
- memset()を使う方法(char型の配列限定)
T myArray[length];
memset(myArray, value, sizeof(myArray));
コメント