配列
配列(はいれつ、Array)とは、プログラムのソースコードにおいて、
連続したデータを扱う際に、各要素を変数として個別に定義するのではなく
連続した一つの領域として定義することです。
配列(int) を使用した記述例
// 配列(int) program in C.
#include <stdio.h>
int main(int argc, char *args[])
{
int a1 = 0, a2 = 0, a3 = 0; // 整数型を個別に宣言
int a[3]; // 整数型を配列で宣言
int i; // ループカウンタ
memset(a, 0x00, sizeof(a)); // 配列を初期化
// 変数に個別に格納
a1 = 101;
a2 = 102;
a3 = 103;
// 配列にループ処理で格納
for (i = 0; i < 3; i++)
{
a[i] = 101 + i;
}
printf("個別 > 1:%d,2:%d,3:%d\n", a1, a2, a3);
printf("配列 > 1:%d,2:%d,3:%d\n", a[0], a[1], a[2]);
return 0;
}
memset()は指定されたポインタが指すオブジェクトの先頭から、
指定されたバイト数分に、指定した文字データを書き込みます。
ここでは'0x00'で初期化しています。
実行結果
個別 > 1:101,2:102,3:103
配列 > 1:101,2:102,3:103
異なる記述で同じ結果を出力しています。
配列(char) を使用した記述例
// 配列(char) program in C.
#include <stdio.h>
int main(int argc, char *args[])
{
char a[11]; // 文字型を配列で宣言
char b[11]; // 文字型を配列で宣言
int i; // ループカウンタ
memset(a, 0x00, sizeof(a)); // 配列を初期化
memset(b, 0x00, sizeof(b)); // 配列を初期化
// 配列にループ処理で格納
for (i = 0; i < 10; i++)
{
a[i] = 'a' + i;
}
// 配列に文字列を格納
strncpy(b, "文字列をコピー", sizeof(b) - 1);
printf("ループ > %s\n", a);
printf("文字列 > %s\n", b);
return 0;
}
strncpy()は指定されたポインタが指すオブジェクトの先頭から、
指定されたバイト数分に、指定した文字列を書き込みます。
ここでは配列のサイズを超えた文字列を配列サイズ - 1 したサイズで書き込みます。
※ a, b どちらの変数も null で終わるようにサイズを調整しています。
実行結果
ループ > abcdefghij
文字列 > 文字列をコ
ループ側については'a'から連続したASCIIコードの文字列が書き込まれています。
文字列コピーについては指定されたサイズまでの文字列が書き込まれています。