> 백엔드 개발 > C++ > C++에서 함수 매개변수를 전달하는 방법은 무엇입니까?

C++에서 함수 매개변수를 전달하는 방법은 무엇입니까?

WBOY
풀어 주다: 2024-04-12 09:12:01
원래의
1242명이 탐색했습니다.

C++에서는 매개변수를 전달하는 네 가지 방법이 있습니다. 1. 값으로 전달(복사) 2. 참조로 전달 3. 상수 참조로 전달 4. 포인터로 전달. 값에 의한 전달과 참조에 의한 전달은 원래 값을 수정하는 데 사용되고, 상수 참조는 읽기 전용 액세스에 사용되고, 포인터에 의한 전달은 메모리 주소를 연산하는 데 사용됩니다.

C++ 函数参数传递方式有哪些?

C++ 함수 매개변수 전달 방법

C++에서는 데이터를 함수에 전달하는 방법이 많이 있습니다. 값의 복사본이 전달되는지 아니면 값에 대한 참조가 전달되는지에 따라 매개변수 전달 방법은 다음과 같은 유형으로 구분됩니다.

1. 값으로 전달

값의 복사본을 전달하고 복사본에 대한 수정 원래 값에는 영향을 미치지 않습니다. 선언 방법:

void f(int a); // 传递 a 的副本
로그인 후 복사

2. 참조로 전달

값에 대한 참조를 전달하고 참조를 수정하면 원래 값에 영향을 미칩니다. 선언 방법:

void f(int& a); // 传递 a 的引用
로그인 후 복사

3. 상수 참조로 전달

은 참조로 전달하는 것과 유사하지만 참조가 가리키는 값을 수정할 수 없습니다. 선언 방법:

void f(const int& a); // 传递 a 的常引用
로그인 후 복사

4. 포인터로 전달

포인터가 가리키는 값을 수정하면 원래 값에 영향을 줍니다. 선언 방법:

void f(int* a); // 传递 a 的指针
로그인 후 복사

실제 사례:

다음은 값별 전달 및 참조별 전달을 사용한 C++ 함수의 예입니다.

#include <iostream>

// 传值
void swapValue(int a, int b) {
  int temp = a;
  a = b;
  b = temp;
}

// 传引用
void swapReference(int& a, int& b) {
  int temp = a;
  a = b;
  b = temp;
}

int main() {
  int x = 1, y = 2;

  std::cout << "Before swapValue: x = " << x << ", y = " << y << std::endl;
  swapValue(x, y);
  std::cout << "After swapValue: x = " << x << ", y = " << y << std::endl;

  std::cout << "Before swapReference: x = " << x << ", y = " << y << std::endl;
  swapReference(x, y);
  std::cout << "After swapReference: x = " << x << ", y = " << y << std::endl;

  return 0;
}
로그인 후 복사

출력 결과:

Before swapValue: x = 1, y = 2
After swapValue: x = 1, y = 2
Before swapReference: x = 1, y = 2
After swapReference: x = 2, y = 1
로그인 후 복사

참고:

  • Pass-by-value는 상황의 가치 사본을 생성해야 할 때 적합합니다.
  • 참조로 전달하는 것은 함수 값의 원래 값을 수정해야 하는 상황에 적합합니다.
  • 상수 참조는 값에 액세스해야 하지만 수정할 필요는 없는 상황에 적합합니다.
  • 포인터 전달은 값의 메모리 주소를 직접 조작해야 하는 상황에 적합합니다.

위 내용은 C++에서 함수 매개변수를 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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