C/C++プログラミング入門 – 配列

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

C/C++プログラミング入門 – 文字列の入力からかなりの期間が離れてしまったところで、今回は久々にC言語及びC++の説明を行いたい。今回は解列について簡単に説明を行いたい。

配列とは

配列とは、本来一つの変数には一つしか格納できないものを、複数個分リストとして持たせることによって、効率良く管理できるようにするためのものである。

もし配列がなければたくさんの関係性のあるデータをいちいち多数の変数に作らなければらなず、非効率的なコードとなってしまうが、配列にすることによって効率良く記述できるようになる。

実際の業務では配列は必須になるため、ぜひ覚えておきたいところである。

C言語

まずはC言語で書いた場合を挙げる。

サンプルコード

[code lang=”c”]#include <stdio.h>
#include <stdlib.h>

static const size_t ARR_LENGTH = 16;

int main()
{
int intArr[ARR_LENGTH];
for (int idx = 0; idx < ARR_LENGTH; idx++) {
intArr[idx] = idx + 1;
}

for (int idx = 0; idx < ARR_LENGTH; idx++) {
printf("intArr[%d] = %d\n", idx, intArr[idx]);
}

return EXIT_SUCCESS;
}
[/code]

解説

上記のコードは、16個分の配列を作成、配列のインデックス値にそれに1を加算させたものを格納させた後、「intArr[インデックスの値] = それに格納された数値」を表示する処理を書いている。

なお、C言語では配列のインデックス値は0から始まるため、例えば最初の数値を取りたいときは、1ではなくて0を入れなければならない。例えば「intArr[1]」と書いてしまった場合、これは最初の場所ではなく、その次の場所のデータを引っ張り出してしまう。

forループについても同様で、0から始まるため、仮に1から始まることと勘違いをしてしまって「for (int idx = 0; idx <= ARR_LENGTH; idx++)」と書いてしまった場合、配列の外を参照することになってしまい、クラッシュするか予期せぬ動作を起こす場合がある。

C++

さて、上記のコードをC++で書いた場合、C++11以降では以下のような書き方もできる。

サンプルコード

[code lang=”cpp”]#include <iostream>
#include <array>
#include <cstdlib>

static const size_t ARR_LENGTH = 16;

int main()
{
std::array<int, ARR_LENGTH> intArr;
for (int idx = 0; idx < intArr.size(); idx++) {
intArr[idx] = idx + 1;
}

for (auto val : intArr) {
std::cout << "value = " << val << std::endl;
}

return EXIT_SUCCESS;
}
[/code]

解説

上記のコードはC言語では通常の配列を使っていたのを、C++ではstd::arrayという専用の配列を使った。ここでは恩恵を受けることはないが、std::arrayのsize()関数を使うことによって、配列のサイズに応じて臨機応変に処理を切り替えられるようになる。

また、配列に格納された値を出力する際に、「for (auto val : intArr)」を使うことによって、その配列内のデータを一通りとって処理を行うことができるようになる。ただし、この場合はインデックス値を取れないため、それを必要とする場合は使えない点は気をつけなければならない。

最後に

ここで簡単な配列に関する説明と使い方については以上のとおりである。実際には配列にはこれにとどまらない多様な使い方が可能で、実際の使用においては使いこなせることが必要最低条件となりうるだろう。

配列を知らない方はこれを足がかりに、ぜひ使いこなせるようになってもらいたいところである。

ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。ご用の方はコメントかコンタクトフォームにて。