>백엔드 개발 >C++ >C++ 함수의 참조 매개변수와 포인터 매개변수의 차이점

C++ 함수의 참조 매개변수와 포인터 매개변수의 차이점

WBOY
WBOY원래의
2024-04-20 21:21:021101검색

C++ 함수에서 참조 매개변수는 변수 주소를 전달하고 매개변수를 수정하면 원래 변수에 영향을 미치는 반면, 포인터 매개변수는 주소에 포인터를 전달하고 매개변수를 수정하면 원래 변수에 영향을 주지 않습니다.

C++ 函数中引用参数和指针参数的区别

C++ 함수의 참조 매개변수와 포인터 매개변수의 차이점

C++에서 함수는 참조 매개변수나 포인터 매개변수를 받아들일 수 있습니다. 둘 다 변수의 주소를 전달하는 데 사용되지만 둘 사이에는 몇 가지 주요 차이점이 있습니다.

참조 매개변수

참조 매개변수는 & 기호를 통해 변수의 주소를 전달합니다. 이는 본질적으로 변수 자체를 전달합니다. 즉, 해당 참조 매개변수에 대한 모든 변경 사항이 원래 변수에 반영됩니다. & 传递变量的地址。它本质上是传递变量本身,这意味着对该引用参数所做的任何更改都会反映在原始变量中。

代码示例:

void swap(int& a, int& b) {
  int temp = a;
  a = b;
  b = temp;
}

int main() {
  int x = 5;
  int y = 10;
  swap(x, y);  // 交换 x 和 y 的值
  cout << x << " " << y << endl; // 输出:10 5
}

指针参数

指针参数通过符号 *

코드 예:

void swap(int *a, int *b) {
  int temp = *a;
  *a = *b;
  *b = temp;
}

int main() {
  int x = 5;
  int y = 10;
  swap(&x, &y);  // 交换 x 和 y 的值
  cout << x << " " << y << endl; // 输出:5 10
}

포인터 매개변수

포인터 매개변수는 * 기호를 통해 변수의 주소를 전달합니다. 이는 본질적으로 변수의 메모리 주소에 대한 포인터를 전달합니다. 이는 포인터 매개변수에 대한 변경 사항이 원래 변수에 반영되지 않음을 의미합니다. 코드 예: 차이 요약참조 매개변수전송 방법인용 변수 주소전송 포인터 주소 매개변수 수정원래 변수 변경원래 변수는 변경되지 않음메모리 공간포인터 크기참조 크기
void swap(int& a, int& b) {
  int temp = a;
  a = b;
  b = temp;
}
Features
포인터 매개변수

목적 실제 매개변수를 전달하세요

큰 객체 또는 복잡한 구조를 전달

실용예

두 요소를 교환해야 하는 함수를 고려해보세요.

🎜참조 매개변수 사용: 🎜🎜
void swap(int *a, int *b) {
  int temp = *a;
  *a = *b;
  *b = temp;
}
🎜🎜포인터 매개변수 사용: 🎜🎜rrreee🎜어떤 방법이 더 나은지는 관련된 특정 상황에 따라 다릅니다. 두 개의 단순 값을 교환해야 하는 경우 참조 매개변수가 더 적합합니다. 그러나 큰 개체나 복잡한 구조를 교환해야 하는 경우 함수 내부 및 외부에서 큰 데이터 청크를 복사하지 않도록 포인터 매개 변수가 더 적합합니다. 🎜

위 내용은 C++ 함수의 참조 매개변수와 포인터 매개변수의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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