>  기사  >  백엔드 개발  >  C++에서 값 전달과 참조 전달의 근본적인 차이점

C++에서 값 전달과 참조 전달의 근본적인 차이점

PHPz
PHPz원래의
2024-04-12 12:00:02467검색

C++에서 값 전달과 참조 전달의 차이점: 값 전달은 매개변수의 복사본을 생성하고 원래 변수에 영향을 주지 않습니다. 참조 전달은 매개변수를 직접 작동하고 수정 사항은 원래 변수에 반영됩니다. 실제 사례: 두 정수 값을 교환하면 값이 교환되지 않지만 참조로 전달하면 교환됩니다.

C++ 值传递和引用传递的本质区别

C++에서 값으로 전달과 참조로 전달의 근본적인 차이점

C++에서는 함수 매개변수를 전달할 때 값으로 전달과 참조로 전달이라는 두 가지 주요 옵션이 있습니다. 이 두 가지 전달 방법의 기본적인 차이점은 값으로 전달하면 매개변수의 복사본이 생성되는 반면, 참조로 전달하면 전달된 매개변수에 직접 작동한다는 것입니다.

값으로 전달

값으로 전달에서는 매개변수 값의 복사본이 함수에 전달됩니다. 이는 함수가 전달된 인수 복사본에 대해 수정한 내용이 원래 변수에 영향을 미치지 않음을 의미합니다.

void PrintValue(int num) {
  num++;
}

int main() {
  int x = 5;
  PrintValue(x);  // 传递 x 的副本
  cout << x;  // 输出 5,因为原始值不受影响
}

Pass by reference

pass by reference에서는 함수에 전달된 매개변수의 참조가 함수에 전달됩니다. 즉, 함수는 전달된 인수에 대해 직접 작동하며 모든 수정 사항은 원래 변수에 반영됩니다.

void PrintReference(int& num) {
  num++;
}

int main() {
  int x = 5;
  PrintReference(x);  // 传递 x 的引用
  cout << x;  // 输出 6,因为原始值已被修改
}

실용 사례

값 전달과 참조 전달의 차이를 보여주는 실제 사례: 두 정수의 값 교환:

값 전달:

// 值传递不会交换原始变量的值
void SwapValues(int a, int b) {
  int temp = a;
  a = b;
  b = temp;
}

int main() {
  int x = 5, y = 10;
  SwapValues(x, y);
  cout << x << " " << y;  // 输出 5 10,原始值没有交换
}

참조 전달:

// 引用传递交换原始变量的值
void SwapReferences(int& a, int& b) {
  int temp = a;
  a = b;
  b = temp;
}

int main() {
  int x = 5, y = 10;
  SwapReferences(x, y);
  cout << x << " " << y;  // 输出 10 5,原始值已交换
}

위 내용은 C++에서 값 전달과 참조 전달의 근본적인 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.