Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C/C++でint型配列のサイズ(要素数)を取得する方法

C言語やC++で整数型(int型)配列のサイズを取得する方法について解説します。ここでいう「サイズ」とは、配列に含まれる要素の数を数えることを意味します。

sizeof()演算子を使った基本的な方法

配列の要素数を取得するには、sizeof() 演算子を使用します。sizeof() の引数に配列名を渡すと、その配列が占有しているメモリブロック全体の合計サイズ(バイト数)が返されます。

したがって、この合計サイズを「各要素1つ分のサイズ」で割り算することで、配列内の要素数を求めることができます。計算式は以下の通りです。

要素数 = sizeof(配列名) / sizeof(配列名[0])

サンプルコード

実際のコード例を見てみましょう。13個の要素を持つint型配列に対して、占有メモリ量と要素数を出力しています。

#include <iostream>
using namespace std;
int main() {
    int data[] = {11, 22, 33, 44, 55, 66, 77, 88, 99, 91, 82, 73, 64};
    cout << "data[]が占有するメモリサイズ: " << sizeof(data) << endl;
    cout << "data[]の要素数: " << sizeof(data)/sizeof(data[0]) << endl;
}

実行結果

data[]が占有するメモリサイズ: 52
data[]の要素数: 13

この環境ではint型が4バイトであるため、13要素 × 4バイト = 52バイトという結果になっています。52バイトを要素1つ分の4バイトで割ると、要素数は13と正しく求められています。

注意点:関数への配列渡しでは使えない

この方法を使用する際には重要な注意点があります。配列を関数の引数として渡すと、配列はポインタへと退化(decay)するため、関数内でsizeof()を使ってもポインタのサイズ(通常8バイトなど)が返され、正しい要素数は取得できません。

そのため、要素数が必要な場合は、配列と一緒に要素数を別途引数として渡すか、C++であれば std::vectorstd::array などのコンテナを使うのが安全です。また、C++17以降では std::size() 関数を使うことでも配列の要素数を直接取得できます。

  1. C#で配列のランク(次元数)を取得する方法を解説

    C#で配列のランク(次元の数)を取得するには、Rankプロパティを使用します。このプロパティを使うことで、対象の配列が何次元配列なのかを簡単に確認できます。配列の宣言と初期化まず、ランクを調べたい配列を宣言し、初期化します。ここでは例として3×3の2次元配列を作成します。int[] myArr = new int[3,3];このように宣言したint[]型の配列は、2つのインデックスを持つ2次元配列です。ランクの取得方法配列のランクを取得するには、配列オブジェクトに対してRankプロパティを呼び出すだけです。myArr.Rank戻り値として、その配列の次元数がint型の整数で返されます。サンプル

  2. C#で配列の長さを取得する方法

    C#で配列の長さ(要素数)を取得するには、Lengthプロパティを使用します。このプロパティは、配列に格納されている全要素の数を整数値として返します。サンプルコード以下に具体的な使用例を示します。using System; class Program { static void Main(){ int[] arr = new int[10]; // 配列の長さを取得 int arrLength = arr.Length; Console.WriteLine(配列の長さ: + arrLength); } }実行結