C言語における可変パラメータリスト

1046 ワード

C言語を習ったばかりの頃、最初のプログラムはprintfで「hello world!」を印刷したことを覚えています.当时はとても不思议だと思って、それからゆっくりと最も简単だと感じて、しかしだんだん熟知してから発见して、私达の书いた関数のパラメータはすべて固定的で、printfのパラメータが意外にも不定であることを発见して、この问题を研究したことがあるかどうか分かりません.実はこれがC言語の可変パラメータの機能です.
可変パラメータ
C言語におけるパラメータ可変を定義可能な関数パラメータ可変関数の実現はstdargに依存する.hヘッダファイルva_list変数とva_start, va_endとva_argコンビネーション使用可アクセスパラメータ値
各例を見てみると、
に質問
n個の数の平均値を計算できる関数をどのように作成しますか?可変パラメータを使用してこの関数を書きます.
#include 
#include 

float average(int n, ...)		//    
{
    va_list args;      //va_list
    int i = 0;
    float sum = 0;
    
    va_start(args, n);			//var_start
    
    for(i=0; i

可変パラメータの制限
可変パラメータは、少なくとも1つの特定の命名パラメータが存在する必要があります.可変パラメータマクロは、実際に存在するパラメータの数を判断できません.可変パラメータマクロは、パラメータの実際のタイプを判断できません.警告:va_argでエラーのタイプが指定されている場合、結果は予測できません.
小結
可変パラメータはC言語が提供する1種の関数設計技術の可変パラメータの関数であり、より便利な関数呼び出し方式の可変パラメータが必要な順序のアクセスが可変パラメータリストの中間のパラメータ値に直接アクセスできないことを提供する.