các anh em cho mình hỏi 1 xíu là, khi mình tạo biến kiểu char có số phần tử là a[5] và chưa nhập dữ liệu và mình thử cho cout ra kết quả strlen(a) thì kết quả nhận được chiều dài là 19, còn đối với new char[5] thì nó có độ dài là 22, ai đó thông não với ạ
Cấp phát bộ nhớ trong char * và char
Bạn biết hàm strlen hoạt động thế nào không?
Nó đếm tới khi nào gặp giá trị byte là zero thì nó dừng.
Bạn cấp phát nhưng không ghi dữ liệu lên thì lúc đó vùng dữ liệu trong RAM có giá trị gì có trời biết, độ dài 19 hay là 22 không có nghĩa lý gì cả.
3 Likes
biến a, kiểu char[]
Cấp phát bộ nhớ với con trỏ sẽ không thể biết được độ dài sau khi cấp phát dựa vào con trỏ. Bởi vì nó chỉ lưu duy nhất thông tin về địa chỉ.
Còn nếu cấp phát sử dụng [] thì có thể biết bằng cách dùng sizeof.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?