Search…

Rắc Rối Lấy Địa Chỉ Biến Kiểu char và cout

18/09/20201 min read
Giải pháp trong việc khó khăn lấy địa chỉ lưu trữ của một biến với cout và char trong C++.

Đị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).

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024