> 백엔드 개발 > C++ > 본문

C++ 함수 매개변수 전달 방식과 가변 매개변수 함수의 관계

WBOY
풀어 주다: 2024-04-13 08:30:01
원래의
747명이 탐색했습니다.

함수 매개변수 전달 방법에는 값 전달, 참조 전달, 포인터 전달이 있습니다. 변수 매개변수 함수는 변수 매개변수 부분의 주소를 알아야 하기 때문에 포인터 전달을 통해서만 매개변수를 전달할 수 있습니다. 예를 들어, sum() 함수는 ...를 사용하여 알 수 없는 수의 인수를 승인한 다음 va_arg() 매크로를 사용하여 가변 인수의 값을 가져옵니다.

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

C++ 함수 매개변수 전달 방법과 가변 매개변수 함수의 관계

C++에서는 함수 매개변수를 값, 참조 또는 포인터로 함수에 전달할 수 있습니다. 이러한 다양한 전달 방법은 함수 내 매개변수의 동작에 중요한 영향을 미치며 가변 함수의 사용에도 영향을 미칩니다.

함수 매개변수 전달 방법

  • 값 전달: 매개변수 복사본이 함수에 전달되며, 복사본을 수정해도 외부 변수에는 영향을 주지 않습니다.
  • 참조로 전달: 매개변수의 주소가 함수에 전달되며 매개변수를 수정하면 외부 변수에 직접적인 영향을 미칩니다.
  • 포인터 전달: 매개변수의 주소가 함수에 전달되며 포인터를 사용하여 외부 변수를 수정하거나 외부 변수의 멤버에 액세스할 수 있습니다.

Variadic 함수

Variadic 함수를 사용하면 함수가 알 수 없는 개수의 매개변수를 허용할 수 있습니다. 가변 부분을 나타내기 위해 특수 구문 ...를 사용합니다. ... 来指示可变参数部分。

函数声明:

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()

함수 선언: 🎜rrreee🎜함수 호출: 🎜rrreee🎜🎜전송 방법과 가변 매개변수 함수의 관계🎜🎜🎜가변 매개변수 함수의 경우 매개변수를 전달하기 위해 포인터만 사용할 수 있습니다. 가변 매개변수 부분의 주소입니다. 따라서 가변 함수의 매개변수는 항상 🎜포인터 전달🎜에 따라 함수에 전달됩니다. 🎜🎜🎜실용 사례🎜🎜🎜다음 코드는 변수 매개변수 함수를 사용하여 숫자의 합을 계산하는 방법을 보여줍니다. 🎜rrreee🎜이 코드에서 sum() 함수는 포인터를 사용하여 변수를 전달합니다. 매개변수..., va_arg() 매크로를 사용하여 가변 인수의 값을 가져옵니다. 🎜

위 내용은 C++ 함수 매개변수 전달 방식과 가변 매개변수 함수의 관계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿