Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Truyền bằng con trỏ so với Truyền bằng tham chiếu trong C++


Đây là ví dụ đơn giản về truyền bằng con trỏ và truyền bằng tham chiếu:

Truyề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";
}

Kết quả

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

Truyề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";
}

Kết quả

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

Vậy, dù truyền tham số cho hàm bằng con trỏ hay tham chiếu, kết quả đều giống nhau. Khác biệt duy nhất: tham chiếu dùng để gọi biến hiện có bằng tên khác, con trỏ lưu địa chỉ biến. Sử dụng tham chiếu an toàn hơn vì không thể là NULL.