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

C++で2次元配列を関数に渡す方法


C++では、配列をそのまま関数の引数として渡すことができます。本記事では、2次元配列を関数に引き渡して、その要素をすべて表示するプログラムを紹介します。

アルゴリズム

Begin
   2次元配列 n[][] を関数 show() に渡す。
   show() 関数内で、二重の for ループ(ネストされたループ)を使って配列 n の全要素を走査する。
End

サンプルコード

#include <iostream>
using namespace std;
void show(int n[4][3]);
int main() {
    int n[4][3] = {
        {3, 4 ,2},
        {9, 5 ,1},
        {7, 6, 2},
        {4, 8, 1}};
    show(n);
    return 0;
}
void show(int n[][3]) {
   cout << "Printing Values: " << endl;
   for(int i = 0; i < 4; ++i) {
      for(int j = 0; j < 3; ++j) {
         cout << n[i][j] << " ";
      }
   }
}

実行結果

Printing Values:
3 4 2 9 5 1 7 6 2 4 8 1

コードのポイント

2次元配列を関数に渡す際には、仮引数の宣言で列数(第2次元のサイズ)を必ず明示する必要があります。上記の例では void show(int n[][3]) のように、行数は省略できますが、列数「3」の指定は不可欠です。これは、配列がメモリ上に行優先(row-major)で連続的に格納されており、各要素のアドレス計算に列数が必要となるためです。

また、呼び出し側では show(n) のように配列名を渡すだけで構いません。このとき渡されるのは配列の先頭アドレス(ポインタ)であり、配列全体のコピーではないため、関数内で要素を書き換えると呼び出し元の配列にも反映される点に注意してください。


  1. C++で2次元配列を関数に渡す3つの方法を解説

    C++では、配列全体をそのまま関数の引数として渡すことはできません。しかし、配列名をインデックスなしで指定することで、配列へのポインタを引数として渡すことは可能です。2次元配列を関数に渡す方法は、主に以下の3つがあります。1. 2次元配列の列のサイズを指定する最も一般的な方法です。関数の引数として、2次元配列の列数を明示的に指定して渡します。void processArr(int a[][10]) { // 何らかの処理 }2. ポインタを格納した配列を渡すポインタの配列を引数として渡す方法です。呼び出し側では、各行を動的に確保したポインタ配列を用意します。void processAr

  2. 【C++入門】配列を関数に渡す3つの方法をわかりやすく解説

    C++では、配列全体をそのまま関数の引数として渡すことはできません。しかし、インデックスを付けずに配列名を指定することで、配列へのポインタを渡すことができます。これは「配列名は先頭要素へのポインタに読み替えられる(配列の減衰)」というC++の仕組みによるものです。1次元配列を関数の引数として渡したい場合は、以下の3つのいずれかの方法で関数の仮引数を宣言します。どの方法でも、コンパイラに対して「整数型のポインタを受け取る」という情報が伝わるため、動作結果はすべて同じになります。配列を関数に渡す3つの宣言方法1. ポインタとして仮引数を宣言するvoid myFunction(int *param)