Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 참조로 전달하는 것보다 포인터로 전달하면 이점이 있습니까?

<시간/>

포인터는 null 매개변수를 수신할 수 있지만 참조는 수신할 수 없습니다. "객체 없음"을 전달하려는 경우에만 포인터를 사용할 수 있습니다.

명시적으로 포인터를 전달하면 개체가 참조로 전달되는지 호출 사이트에서 값으로 전달되는지 확인할 수 있습니다.

다음은 포인터로 전달하고 참조로 전달하는 간단한 예입니다 -

포인터로 전달

#include <iostream>
using namespace std;
void swap(int* a, int* b) {
   int c = *a;
   *a= *b;
   *b = c;
}
int main() {
   int m =7 , n = 6;
   cout << "Before Swap\n";
   cout << "m = " << m << " n = " << n << "\n";
   swap(&m, &n);
   cout << "After Swap by pass by pointer\n";
   cout << "m = " << m << " n = " << n << "\n";
}

출력

Before Swap
m = 7 n = 6
After Swap by pass by pointer
m = 6 n = 7

참조로 전달

#include <iostream>
using namespace std;
void swap(int& a, int& b) {
   int c = a;
   a= b;
   b = c;
}
int main() {
   int m =7 , n = 6;
   cout << "Before Swap\n";
   cout << "m = " << m << " n = " << n << "\n";
   swap(m, n);
   cout << "After Swap by pass by reference\n";
   cout << "m = " << m << " n = " << n << "\n";
}

출력

Before Swap
m = 7 n = 6
After Swap by pass by reference
m = 6 n = 7