1
Sự khác nhau giữa biến con trỏ và biến tham chiếu trong C++ là gì?
1
Kiến Bình10 đã đăng:

Khai báo biến con trỏ và biến tham chiếu như sau

int a = 2;
int *p = &a; // biến con trỏ
int &r = a; // biến tham chiếu

Vậy cho mình hỏi sự khác nhau giữa hai biến này là gì?

thêm bình luận...
2
minhkiet150 đã đăng:

Theo mình biết thì biến con trỏ và biến tham chiếu trong C++ có những điểm khác nhau cơ bản là:

~ Biến con trỏ có thể được khởi tạo mặc định với giá trị rác và cập nhật lại giá trị khi cần thiết trong khi biến tham chiếu thì không.

// Biến con trỏ
int a = 2;
int *p; // biến con trỏ đang chứa giá trị rác
p = &a; // hợp lệ, biến con trỏ đang chứa địa chỉ của a
*p = 3; // hợp lệ, cập nhật giá trị của biến con trỏ bằng 3

// Biến tham chiếu
int a = 2;
int &r; // không hợp lệ, biến tham chiếu phải được khởi tạo với giá trị cho trước
int &r = a; //hợp lệ, biến tham chiếu chứa địa chỉ của a

~ Biến con trỏ có thể được khởi tạo với giá trị NULL, biến tham chiếu thì không.

int *p = NULL; // hợp lệ
int &r = NULL; // không hợp lệ

~ Biến con trỏ có địa chỉ vùng nhớ riêng của nó trong khi biến tham chiếu dùng chung địa chỉ vùng nhớ với biến ban đầu

int a = 2; // Địa chỉ vùng nhớ của a: 0026FB1C
int *p = &a; // Địa chỉ vùng nhớ của p: 0016F998

int b = 3; // Địa chỉ vùng nhớ của b: 00EDF89C
int &r = b; // Địa chỉ vùng nhớ của r: 00EDF89C

~ Biến con trỏ có thể trỏ tới biến con trỏ khác trong khi biến tham chiếu thì không

int a = 2;
int *p = &a;
int **p = &p; // biến con trỏ trỏ tới biến con trỏ
thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)