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?

Không có đâu bạn :slight_smile: 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 :smiley:

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

1 Like

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

2 Likes

@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 :smile:
Được voi đòi 2 bà Trưng :smiley:

2 Likes

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*

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?