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 중국어 웹사이트의 기타 관련 기사를 참조하세요!