ホームページ >バックエンド開発 >C++ >C++ 関数パラメータの受け渡しメソッドと可変パラメータ関数の関係

C++ 関数パラメータの受け渡しメソッドと可変パラメータ関数の関係

WBOY
WBOYオリジナル
2024-04-13 08:30:01771ブラウズ

関数パラメータの受け渡し方法には、値の受け渡し、参照の受け渡し、およびポインタの受け渡しが含まれます。関数は変数パラメータ部分のアドレスを知る必要があるため、変数パラメータ関数はポインタ受け渡しによってのみパラメータを渡すことができます。たとえば、sum() 関数は ... を使用して未知の数の引数を受け入れ、その後 va_arg() マクロを使用して可変長引数の値を取得します。

C++ 函数参数传递方式与可变参数函数的关系

#C 関数のパラメータの受け渡し方法と変数パラメータ関数の関係

C では、関数のパラメータを値で渡すことができます。関数は参照またはポインタによって渡されます。これらのさまざまな受け渡し方法は、関数内のパラメーターの動作に大きな影響を与え、また、可変個引数関数の使用にも影響します。

関数パラメータの受け渡しメソッド

  • # 値の受け渡し: パラメータのコピーが関数に渡され、変更があれば関数に渡されます。コピーは外部変数に影響を与えません。
  • 参照渡し: パラメータのアドレスは関数に渡され、パラメータの変更は外部変数に直接影響します。
  • ポインタの受け渡し: パラメータのアドレスが関数に渡され、ポインタを使用して外部変数を変更したり、外部変数のメンバーにアクセスしたりできます。

可変パラメータ関数

可変引数パラメータ関数を使用すると、関数は未知の数のパラメータを受け入れることができます。特殊な構文

... を使用して可変個引数部分を示します。

関数宣言:

int sum(int count, ...);

関数呼び出し:

int result = sum(3, 1, 2, 3);

転送メソッドと可変パラメータ関数の関係

変数パラメトリックの場合関数は変数パラメータ部分のアドレスを知っている必要があるため、関数はパラメータを渡すためにポインタのみを使用できます。したがって、可変引数関数のパラメーターは常に

ポインター渡し によって関数に渡されます。

実践的なケース

次のコードは、変数パラメーター関数を使用して数値の合計を計算する方法を示しています。

#include <cstdarg>
#include <iostream>

int sum(int count, ...) {
  va_list args; // 可变参数列表
  va_start(args, count); // 初始化可变参数列表,count 为固定参数

  int sum = 0;
  for (int i = 0; i < count; i++) {
    sum += va_arg(args, int); // 获取可变参数,将其转换为 int
  }

  va_end(args); // 清理可变参数列表

  return sum;
}

int main() {
  // 调用可变参数函数
  int result = sum(3, 1, 2, 3);
  std::cout << result << std::endl; // 输出结果
}

このコードでは、

sum () この関数は、ポインターを使用して変数パラメーター ... を渡し、va_arg() マクロを使用して変数パラメーターの値を取得します。

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

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