【C++入門】変数と実数を使って配列を初期化する方法を徹底解説
配列とは
配列とは、連続したメモリ領域上に同じ型の要素をまとめて格納したデータ構造です。配列内で最も小さいアドレスは先頭の要素に対応し、最も大きいアドレスは末尾の要素に対応します。また、配列のインデックス(添字)は 0 から始まり、最大で「配列サイズ - 1」までとなります。
C++では、配列を初期化する際に変数だけでなく、実数(数値リテラル)を直接指定することもできます。以下のサンプルプログラムで、その具体的な方法を見ていきましょう。
サンプルコード
#include <iostream>
using namespace std;
int main() {
int a = 5;
int b = 3;
int arr[4];
arr[0] = a;
arr[1] = 8;
arr[2] = b;
arr[3] = 2;
cout << "The elements of array are: ";
for(int i = 0; i<4; i++)
cout << arr[i] << " ";
return 0;
}
実行結果
上記のプログラムを実行すると、次のような出力が得られます。
The elements of array are: 5 8 3 2
コードの解説
それでは、プログラムの流れを順番に確認していきます。
まず、サイズ4の int 型配列 arr を宣言しています。続いて、int 型の変数 a と b をそれぞれ 5 と 3 で初期化します。その後、配列の第1要素(arr[0])と第3要素(arr[2])には変数 a と b の値を代入し、第2要素(arr[1])と第4要素(arr[3])には実数である 8 と 2 を直接代入しています。該当するコード部分は以下の通りです。
int a = 5;
int b = 3;
int arr[4];
arr[0] = a;
arr[1] = 8;
arr[2] = b;
arr[3] = 2;
cout << "The elements of array are: ";
for(int i = 0; i<4; i++)
cout << arr[i] << " ";
最後に for ループを使って配列の全要素を先頭から順に出力しており、「5 8 3 2」という結果が得られます。このことから、C++では配列の各要素に対して、変数の値でもリテラル値でも自由に代入・初期化できることがわかります。
補足:宣言と同時に初期化する方法
個別に代入する代わりに、宣言時に初期化子リストを使えば、次のように変数とリテラルを混在させて一括で初期化することも可能です。
int a = 5;
int b = 3;
int arr[4] = {a, 8, b, 2};
こちらの書き方の方がコードが簡潔になり、可読性も向上します。状況に応じて使い分けると良いでしょう。
-
C++で数値Nが基数b表記において1から始まるかどうかを判定する方法
本記事では、数値Nと基数bが与えられたとき、「Nを基数bで表記すると先頭の桁が1になるかどうか」を判定する方法をC++で解説します。 まず具体例を見てみましょう。数値6を2進数で表すと「110」であり、先頭は1です。4進数で表すと「12(4)」となり、これも先頭が1です。このように、同じ数でも基数によって表記が変わり、先頭の桁が1になる場合とならない場合があります。 判定の考え方(数学的な背景) 数値Nを基数bで表すと、m+1桁の数列 dm dm-1 … d0 になり、次の関係が成り立ちます。 dm × bm + dm-1 × bm-1 + … + d0 × b0 = N ここで、先頭の桁
-
C++で可変数の引数(可変長引数)を扱う方法
プログラミングをしていると、引数の個数があらかじめ決まっていない関数、つまり呼び出しのたびに異なる数のパラメータを受け取れる関数が必要になる場面があります。C/C++ではこのような状況に対応する仕組みが用意されており、要件に応じて可変個の引数を受け取る関数を自由に定義できます。以下に、そのような関数の定義例を示します。 int func(int, ... ) { . . . } int main() { func(1, 2, 3); func(1, 2, 3, 4); } 注目すべきは、関数func()の最後の引数が省略記号(ピリオド3つの「...」)になってい