工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C - 可変引数

事前定義された数のパラメーターの代わりに、可変数の引数、つまりパラメーターを取ることができる関数が必要な場合に、状況に遭遇することがあります。 C プログラミング言語はこの状況の解決策を提供し、要件に基づいて可変数のパラメーターを受け入れることができる関数を定義することができます。次の例は、そのような関数の定義を示しています。

int func(int, ... ) {
   .
   .
   .
}

int main() {
   func(1, 2, 3);
   func(1, 2, 3, 4);
}

関数 func() 最後の引数は楕円、つまり 3 つのドット (...) です。 ) であり、省略記号の直前のものは常に int です これは、渡された可変引数の総数を表します。このような機能を使用するには、stdarg.h を利用する必要があります。 変数引数の機能を実装し、指定された手順に従うための関数とマクロを提供するヘッダー ファイル −

上記の手順に従って、可変数のパラメーターを取り、それらの平均を返すことができる単純な関数を書き留めましょう-

ライブデモ
#include <stdio.h>
#include <stdarg.h>

double average(int num,...) {

   va_list valist;
   double sum = 0.0;
   int i;

   /* initialize valist for num number of arguments */
   va_start(valist, num);

   /* access all the arguments assigned to valist */
   for (i = 0; i < num; i++) {
      sum += va_arg(valist, int);
   }
	
   /* clean memory reserved for valist */
   va_end(valist);

   return sum/num;
}

int main() {
   printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5));
   printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15));
}

上記のコードをコンパイルして実行すると、次の結果が生成されます。関数 average() が 2 回呼び出され、そのたびに最初の引数が渡される可変引数の総数を表します。可変数の引数を渡すために省略記号のみが使用されます。

Average of 2, 3, 4, 5 = 3.500000
Average of 5, 10, 15 = 10.000000

C言語

  1. C プログラミングにおけるユーザー定義関数のタイプ
  2. C ストレージ クラス
  3. C の関数に配列を渡す
  4. Python 関数の引数
  5. C++ の変数と型:int、double、char、string、bool
  6. C 変数、データ型、定数
  7. Verilog 割り当て
  8. C - 変数
  9. C - 関数
  10. C - ポインター
  11. C - ビット フィールド