配列

配列(はいれつ、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コードの文字列が書き込まれています。
文字列コピーについては指定されたサイズまでの文字列が書き込まれています。



Last updated:2017/06/06
Author:efn

';