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

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

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

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

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

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

함수 매개변수 전달 방법

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

Variadic 함수

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

函数声明:

int sum(int count, ...);
로그인 후 복사

函数调用:

int result = sum(3, 1, 2, 3);
로그인 후 복사

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

对于可变参数函数,只能使用指针传递参数,因为函数必须知道可变参数部分的地址。因此,可变参数函数的参数总是以指针传递的方式传入函数。

实战案例

以下代码展示了如何使用可变参数函数计算数字的总和:

#include  #include  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으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!