포인터는 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