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

Khi nào nên dùng tham chiếu (reference) thay vì con trỏ (pointer) trong C/C++

Biến tham chiếu (Reference)

Biến tham chiếu là một tên thay thế (alias) cho một biến đã tồn tại. Nó không thể thay đổi để tham chiếu đến biến khác và phải được khởi tạo ngay tại khai báo. Tham chiếu không thể là NULL. Toán tử & dùng để khai báo tham chiếu.

Cú pháp:

datatype variable_name;        // Khai báo biến
datatype& refer_var = variable_name; // Khai báo tham chiếu

Trong đó:

  • datatype – Kiểu dữ liệu (int, char, float...)
  • variable_name – Tên biến gốc
  • refer_var – Tên biến tham chiếu

Ví dụ tham chiếu

#include <iostream>
using namespace std;

int main() {
    int a = 8;
    int& b = a;
    cout << "Bien a: " << a;
    cout << "\nTham chieu b: " << b;
    return 0;
}

Kết quả:

Bien a: 8
Tham chieu b: 8

Con trỏ (Pointer)

Con trỏ là biến lưu trữ địa chỉ của biến khác. Khi cấp phát bộ nhớ cho biến, con trỏ trỏ đến địa chỉ đó.

Cú pháp:

datatype *variable_name;

Ví dụ con trỏ

#include <stdio.h>

int main() {
    int a = 8;
    int *ptr;
    ptr = &a;
    printf("Gia tri bien: %d\n", a);
    printf("Dia chi bien: %p\n", (void*)ptr);
    printf("Gia tri qua con tro: %d\n", *ptr);
    return 0;
}

Kết quả:

Gia tri bien: 8
Dia chi bien: 0x7ffc...
Gia tri qua con tro: 8

So sánh và khi nào dùng cái nào

Tiêu chíReferencePointer
Khởi tạoBắt buộc tại khai báoCó thể khởi tạo sau
Gán lạiKhông thểCó thể trỏ đến biến khác
NULLKhông thểCó thể
Cú pháp truy cậpGiống biến thường (ref)Cần giải tham chiếu (*ptr)
An toànCao hơn (không null, không gán lại)Linh hoạt hơn nhưng rủi ro cao hơn

Khuyên dùng: Ưu tiên reference khi chỉ cần alias cho biến (tham số hàm, trả về tham chiếu). Dùng pointer khi cần cấp phát động, mảng, optional parameters (có thể NULL), hoặc tương tác C-style API.