Sự khác nhau giữa biến con trỏ và biến tham chiếu trong C++ là gì?
1
2
minhkiet • 150
đã đă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 chưa đăng nhập, vui lòng đăng nhập để thêm câu trả lời.
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)