Địa chỉ của một biến là gì?
Vào thời điểm khai báo một biến thì nó sẽ được lưu trữ trong bộ nhớ của máy. Nơi lưu trữ nó chính là địa chỉ của biến vừa khai báo. Để biết được địa chỉ này dùng toán tử & đặt trước biến cần lấy địa chỉ.
Ví dụ, khai báo int a;
thì địa chỉ của biến sẽ được lấy là &a
.
Code mẫu
#include <iostream> int main() { int a; std::cout << "Address of a: " << &a; return 0; }
Trong trường hợp này, kết quả là 0061F9A4
.
Lấy địa chỉ của một biến kiểu char
Thay int a
thành char a
ta có
#include <iostream> int main() { char a; std::cout << "Address of a: " << &a; return 0; }
Kết quả nhận được là: AAAAAAAA
Đó không phải là kết quả mong muốn. Lý do là vì khi lấy &a
thì được 1 kết quả với kiểu trả về tương ứng là char*
. Và cách ứng xử của cout
với char*
là xem nó như một chuỗi thay vì một địa chỉ (1 con số), đó chính là điều rắc rối bài viết đề cập. Giải pháp đơn giản, ép kiểu về một dạng số nguyên (trong trường hợp này dùng kiểu số nguyên lớn hơn 4 bytes là được).