ホームページ  >  記事  >  バックエンド開発  >  C++ 関数の変数パラメータの受け渡しメカニズム

C++ 関数の変数パラメータの受け渡しメカニズム

王林
王林オリジナル
2024-04-20 09:18:02474ブラウズ

C 変数パラメータ受け渡しメカニズムにより、関数は無限の数のパラメータを受け入れることができます。構文では、変数パラメータを示すために ... 省略記号を使用します。一般的なアプリケーションには、va_list を使用して可変長引数リストにアクセスする printf() 関数などのフォーマットされた出力が含まれます。

C++ 函数可变参数传递机制

#C 関数の変数パラメータ受け渡しメカニズム

はじめに

C が提供する可変引数パラメータ受け渡しメカニズムにより、関数は不特定の数のパラメータを受け入れることができます。これは、さまざまなソースからのデータを処理したり、パラメーター リストを動的に作成したりする必要があるシナリオで役立ちます。

構文

可変個引数関数は、

... 記号を省略した仮パラメータを宣言する関数です。省略記号は、関数がこの型の引数を無限に受け入れられることを示します。

例:

void printArgs(const char* fmt, ...)
{
    // ... 代码
}

実用的なケース: フォーマットされた出力

変数パラメーター受け渡しメカニズムの一般的なアプリケーションは、フォーマットされた出力です。次のコードは、

printf() 関数を使用して可変数のパラメーターを出力する方法を示しています。

#include <iostream>
#include <stdarg.h>

using namespace std;

void print(const char* fmt, ...)
{
    va_list args;
    va_start(args, fmt);
    vprintf(fmt, args);
    va_end(args);
}

int main()
{
    print("Hello, %s!", "world");
    print("Average: %d, %d, %d", 1, 2, 3);

    return 0;
}

出力:

Hello, world!
Average: 1, 2, 3

パラメータへのアクセス

va_list を使用して、変数パラメータ リスト内のパラメータにアクセスできます。 va_start()va_list オブジェクトを初期化し、va_arg() は次の引数を取得するために使用されます。

va_list および va_arg() の詳細については、C 標準ライブラリのドキュメントを参照してください。

以上がC++ 関数の変数パラメータの受け渡しメカニズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。