01/10/2018, 16:39

Tìm số phần tử trong vùng nhớ trỏ đến

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?

rogp10 viết 18:50 ngày 01/10/2018

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

Trần Hoàn viết 18:46 ngày 01/10/2018

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

Hatake Kakashi viết 18:42 ngày 01/10/2018

@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ó

Trần Hoàn viết 18:53 ngày 01/10/2018

Đã 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.

Hatake Kakashi viết 18:50 ngày 01/10/2018

@TrầnHoàn Cảm ơn bạn. Dù sao mình vẫn muốn dùng mảng hơn.

Văn Dương viết 18:41 ngày 01/10/2018

Bản chất nó không được còn cố mãi
Được voi đòi 2 bà Trưng

Quan viết 18:42 ngày 01/10/2018

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 ?

Henry Đại viết 18:48 ngày 01/10/2018

đếm từ vị trí con trỏ trỏ đến cho đến ký tự \0 thì phải

Trần Hoàn viết 18:53 ngày 01/10/2018

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*

Bài liên quan
0