01/10/2018, 00:02

Malloc và realloc

Khi xóa 1 phần tử trong mảng động, số phần tử trong mảng không tự động giảm đi, vậy phải làm thế nào để xuất mảng mới ra với số phần tử là n-1.( ko dùng for(i=0;i<n-1;i++)

Người bí ẩn viết 02:18 ngày 01/10/2018

Trong C thì dùng hàm realloc nhé: realloc(<bộ_nhớ_cần_thay_đổi>, <số ô nhớ muốn thay đổi> * <độ dài của 1 ô nhớ>);

VD: Bạn có mảng arr gồm 5 phần tử thuộc kiểu int, bạn muốn xóa đi ô cuối, tức là còn 4 phần tử, thì bạn phải dịch phần tử cần xóa xuống cuối mảng rồi để dòng này: realloc(arr, (n - 1) * sizeof(int)); (n là số lượng phần tử mảng arr)

Còn trong C++ thì không có hàm hỗ trợ cho việc này. Lập trình viên có thể tự viết ra hàm riêng cho mình.

Trần Thị Minh Thùy viết 02:16 ngày 01/10/2018

nếu dùng vòng for, mỗi lần cấp thêm 1 phần tử thì xài cái nào vậy ạ

rogp10 viết 02:13 ngày 01/10/2018

Không nên. Bạn nên viết hay dùng cấu trúc tự co giãn

Trần Thị Minh Thùy viết 02:16 ngày 01/10/2018

Nhờ xem hộ em cái này ạ, em thử xài realloc. dùng 2 vòng for xuất ra dòng printf giống nhau, sao lại ra kết quả khác nhau vậy ạ

rogp10 viết 02:07 ngày 01/10/2018

Cú pháp của malloc giống realloc, với tham số đều là số byte

Bài liên quan
0