mình có con trỏ trỏ đến mảng khai báo như sau:
string* str;
Bây giờ mình muốn lấy số lượng phần tử(số lượng chuỗi string) mà con trỏ này trỏ đến thì phải làm như thế nào vậy?
Tìm số phần tử trong vùng nhớ trỏ đến
Không có đâu bạn nó chỉ có vậy thôi.
Nhưng vì sao mảng tĩnh làm được? Vì con số đó được lấy tại chỗ và thay vào trong lúc biên dịch. Chứ con trỏ có thể từ ngoài đem vào thì sao mà tính
Không làm được nhé bạn. Thế nên người ta mới phải lưu biến n
cho độ dài mảng.
Mà giờ người ta toàn dùng std::vector
@rogp10 Ví dụ mình khai báo nó như str = new string[num]
. vậy làm sao để xác định được num giả sử khi mình quên mất giá trị của nó
Đã nói là không được mà :))
Thế nên mới bảo là dùng thêm 1 biến để lưu.
Hoặc là dùng std::vector<string> str = std::vector<string>()
. Khi nào cần đọc thì gọi str.size()
ra, tự update theo kích thước của str
không cần phải tự mình thay đổi như biến tạm kia.
@TrầnHoàn Cảm ơn bạn. Dù sao mình vẫn muốn dùng mảng hơn.
Bản chất nó không được còn cố mãi
Được voi đòi 2 bà Trưng
Liệu có thể dùng malloc rồi chia cho số ô nhớ mà kiểu dữ liệu nó chiếm từng ô hay không ?
đếm từ vị trí con trỏ trỏ đến cho đến ký tự \0 thì phải
Không được, nếu như ô nhớ tiếp theo khối dữ liệu ấy đã có một giá trị nào đó. Với cả cách đó là dùng cho char*
chứ ko dùng được cho char**
hoặc string*
Với cả cách đếm này chỉ dùng với C, khi mà người ta khi nhập chuỗi bằng char*
phải chủ động nhập ký tự null ở cuối cùng. Còn đây là string
, không phải char*