配列要素と配列名の両方を関数のパラメータとして使用して、関数間でデータを転送および共有できます。
関数を呼び出すときに、配列要素を実パラメータとして使用できます。これは、この型の変数 (またはオブジェクト) を実パラメータとして使用するのとまったく同じです。
配列名が関数パラメータとして使用される場合、実パラメータと仮パラメータの両方が配列名であり、同じ型である必要があります。通常のパラメータとしての変数とは異なり、配列名を使用してデータを転送する場合、渡されるのはアドレスです。仮パラメータ群と実パラメータ群の先頭アドレスは一致しており、以降の要素はメモリへの格納順に対応しており、対応する要素は同じデータ格納アドレスを使用しているため、実パラメータの要素数は異なります。パラメータ グループは、仮パラメータ グループの要素数より小さくてはなりません。呼び出される関数で仮パラメータグループの要素値が変更されると、呼び出し元関数の実パラメータグループの対応する要素値も変更されます。
【例】配列名を関数の引数として使用する。メイン関数で行列を初期化して各要素を出力し、サブ関数を呼び出して各行の要素の合計を計算し、その合計を各行の最初の要素に直接格納し、関数に戻った後に各行の要素を出力します。との関数。
void rowSum(int a[][4],int nRow)
{
for (int i = 0; i < nRow;i++)
{
for (int j = 1; j < 4; j++)
{
a[i][0] += a[i][j];
}
cout << "第" << i+1 << "行元素的和为:" << a[i][0] << endl;
}
}
int main()
{
int arr[3][4] = {
{
1,2,3,4},{
2,3,4,5},{
3,4,5,6} };
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
cout<<arr[i][j]<<" ";
}
cout << endl;
}
rowSum(arr, 2);
return 0;
}
実行結果:
結果分析:
サブ関数が呼び出される前は、arr[i][0] の出力値はそれぞれ 1、2、3 であり、呼び出しが完了した後は、arr[i] の値が][0] はそれぞれ 10、14、18 です。つまり、サブ関数内の仮パラメータ要素の演算結果は、関数実パラメータの対応する要素に直接影響します。
[注意] 関数のパラメータとして配列を使用する場合、通常、配列の 1 次元目のサイズは指定されず、指定されても無視されます。