Sunday, September 2, 2018

Cでの関数引数としての配列の受け渡し

関数内で引数として一次元配列を渡したい場合は、以下の3つの方法のいずれかで仮引数を宣言し、3つの宣言方法すべてが同様の結果を生成する必要があります。 受け取る。 同様に、多次元配列を仮パラメータとして渡すことができます。

ウェイ1
ポインタとしての正式なパラメータ
void myFunction(int *param) {
   .
   .
   .
}

ウェイ-2
サイズの配列としての正式なパラメータ
void myFunction(int param[10]) {
   .
   .
   .
}

道 - 3
サイズの指定されていない配列としての正式なパラメータ
void myFunction(int param[]) {
   .
   .
   .
}



今度は、次の関数を考えてみましょう。これは、配列を別の引数と共に引数としてとり、渡された引数に基づいて、次のように配列を渡される数値の平均を返します
double getAverage(int arr[], int size) {

   int i;
   double avg;
   double sum = 0;

   for (i = 0; i < size; ++i) {
      sum += arr[i];
   }

   avg = sum / size;

   return avg;
}
さて、上記の関数を以下のように呼ぶ

#include <stdio.h>
 
/* function declaration */
double getAverage(int arr[], int size);

int main () {

   /* an int array with 5 elements */
   int balance[5] = {1000, 2, 3, 17, 50};
   double avg;

   /* pass pointer to the array as an argument */
   avg = getAverage( balance, 5 ) ;
 
   /* output the returned value */
   printf( "Average value is: %f ", avg );
    
   return 0;
}
Average value is: 214.400000

ご覧のように、配列の長さは、Cが仮パラメータの境界チェックを実行しないため、関数が関係する限り重要ではありません。



No comments:

Post a Comment

Interfaces and their protocol stacks

インタフェースとそのプロトコルスタック 主要なネットワーク要素に精通した後、これら要素間のインタフェースをよりよく知る時期が来ています。 インタフェースは、MME、SGWおよびPGWが他のネットワーク要素(例えば、HSSまたはPCRF)と協働することを可能にする。 それらの...