C言語における可変パラメータリスト
1046 ワード
C言語を習ったばかりの頃、最初のプログラムはprintfで「hello world!」を印刷したことを覚えています.当时はとても不思议だと思って、それからゆっくりと最も简単だと感じて、しかしだんだん熟知してから発见して、私达の书いた関数のパラメータはすべて固定的で、printfのパラメータが意外にも不定であることを発见して、この问题を研究したことがあるかどうか分かりません.実はこれがC言語の可変パラメータの機能です.
可変パラメータ
C言語におけるパラメータ可変を定義可能な関数パラメータ可変関数の実現はstdargに依存する.hヘッダファイルva_list変数とva_start, va_endとva_argコンビネーション使用可アクセスパラメータ値
各例を見てみると、
に質問
n個の数の平均値を計算できる関数をどのように作成しますか?可変パラメータを使用してこの関数を書きます.
可変パラメータの制限
可変パラメータは、少なくとも1つの特定の命名パラメータが存在する必要があります.可変パラメータマクロは、実際に存在するパラメータの数を判断できません.可変パラメータマクロは、パラメータの実際のタイプを判断できません.警告:va_argでエラーのタイプが指定されている場合、結果は予測できません.
小結
可変パラメータはC言語が提供する1種の関数設計技術の可変パラメータの関数であり、より便利な関数呼び出し方式の可変パラメータが必要な順序のアクセスが可変パラメータリストの中間のパラメータ値に直接アクセスできないことを提供する.
可変パラメータ
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種の関数設計技術の可変パラメータの関数であり、より便利な関数呼び出し方式の可変パラメータが必要な順序のアクセスが可変パラメータリストの中間のパラメータ値に直接アクセスできないことを提供する.