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

C++で配列を参照渡しする方法|ポインタを使った関数呼び出しの基本

C++において、関数を呼び出すときに配列のアドレス(番地)を渡す方式は「参照渡し(call by reference)」と呼ばれます。引数としてアドレスを渡す場合、それを受け取る側の関数は、渡されたアドレスを格納できるようにポインタ型の仮引数を宣言しておく必要があります。

関数側では、間接参照演算子「*」を使うことで、ポインタが指し示す先の値にアクセスできます。これにより、関数の中から元の配列のデータを直接操作することが可能になります。

サンプルコード

#include <iostream>
using namespace std;
void show( int *num) {
    cout<<*num;
}
int main() {
    int a[] = {3,2,1,6,7,4,5,0,10,8};
    for (int i=0; i<10; i++) {
        show (&a[i]);
    }
    return 0;
}

実行結果

32167450108

コードのポイント

  • show(int *num):ポインタ型の引数を受け取る関数です。「*num」で渡されたアドレス先の値を出力します。
  • &a[i]:配列の i 番目の要素のアドレスを取得し、関数へ渡しています。
  • forループ:配列の全要素(10個)に対して、順番に show 関数を呼び出します。

補足:配列全体をまとめて渡す方法

上記の例では要素ごとにアドレスを渡していますが、実際の開発では配列名(先頭要素へのポインタ)と要素数を一緒に渡し、関数内でループ処理を行うのが一般的です。

#include <iostream>
using namespace std;
void showAll(int *arr, int size) {
    for (int i = 0; i < size; i++) {
        cout << arr[i];
    }
}
int main() {
    int a[] = {3,2,1,6,7,4,5,0,10,8};
    showAll(a, 10);
    return 0;
}

また、C++ではポインタの代わりに参照(&)を使った参照渡しも可能です。参照を使うとポインタ演算のミスを防げるため、より安全に元のデータへアクセスできます。用途に応じて使い分けるとよいでしょう。

  1. C++のnew演算子を使って2次元配列を動的に宣言・生成する方法

    動的な2次元配列とは、基本的に「配列へのポインタ」を要素とする配列(ポインタの配列)のことです。つまり、各行が独立した1次元配列としてヒープ上に確保され、それらの先頭アドレスを格納するポインタ配列によって全体が管理されます。下図は、3×4の2次元配列のイメージです。アルゴリズムC++のnew演算子で2次元配列を動的に確保する手順は以下の通りです。Begin 配列の寸法(行数・列数)を宣言する。 new を使って 2次元配列 a[][] を動的に確保する。 配列に要素を代入する。 配列の内容を出力する。 delete でメモリを解放する。 Endサンプルコ

  2. C#のメソッドに配列を引数として渡す方法を解説

    C#では、配列をそのままメソッドの引数として渡すことができます。本記事では、配列の宣言・初期化から、メソッドへの受け渡し、実際のサンプルコードと実行結果まで、順を追ってわかりやすく解説します。 1. 配列の宣言と初期化 まず、メソッドに渡すための配列を宣言し、初期化しておきましょう。ここでは、5つの要素を持つint型の配列を用意します。 MyArray app = new MyArray(); /* 5つの要素を持つint型配列 */ int[] balance = new int[]{1000, 2, 3, 17, 50}; 2. 配列を受け取るメソッドを定義する 次に、配列を引数として