char chỉ lưu được 1 ký tự.
char c = 'A';
Kích thước:
sizeof(c) = 1
1 byte này chính là dữ liệu của ký tự 'A'.
string s = "Hello";
Giả sử:
cout << sizeof(string);
Kết quả:
32
Lưu ý: 32 byte này không phải là số ký tự mà string lưu được.
Đây chỉ là kích thước của đối tượng string.
Một đối tượng string thường chứa:
string s = "Hello";
+------------------------+
| string (32 byte) |
|------------------------|
| Con trỏ ----------+ |
| Độ dài = 5 | |
| Dung lượng = 15 | |
| ... | |
+-------------------+ |
|
v
+----------------+
| H e l l o \0 |
+----------------+
string s(1000, 'A');
Chuỗi trên có 1000 ký tự.
Nhưng:
sizeof(s)
vẫn có thể trả về:
32
Vì sizeof chỉ đo kích thước của đối tượng string, không đo vùng nhớ chứa các ký tự.
| Kiểu dữ liệu | sizeof | Lưu được bao nhiêu ký tự? |
|---|---|---|
| char | 1 byte | 1 ký tự |
| char ten[30] | 30 byte | Tối đa khoảng 29 ký tự + '\0' |
| string | 24 hoặc 32 byte (tùy trình biên dịch) | Tự động mở rộng, rất nhiều ký tự |
sizeof(string) không phải là số ký tự tối đa.string có thể tự động mở rộng khi thêm dữ liệu.Tìm kiếm:
So sánh char và string trong C++, ứng dụng trong thực tế thế nào khi xây dựng ứng dụng.