Đây là ví dụ đơn giản về chuyển qua con trỏ và chuyển qua tham chiếu -
Di chuyển bằng con trỏ
#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"; }
Đầu ra
Before Swap m = 7 n = 6 After Swap by pass by pointer m = 6 n = 7
Chuyển bằng tham chiếu
#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"; }
Đầu ra
Before Swap m = 7 n = 6 After Swap by pass by reference m = 6 n = 7
Vì vậy, nếu chúng ta truyền tham số cho một hàm bằng cách truyền qua con trỏ hoặc truyền qua tham chiếu, nó sẽ tạo ra cùng một kết quả. Chỉ có sự khác biệt là Tham chiếu được sử dụng để tham chiếu đến một biến hiện có với tên khác trong khi con trỏ được sử dụng để lưu trữ địa chỉ của biến. Có thể sử dụng tham chiếu an toàn vì nó không thể là NULL.