* Tạo một biến động do biến con trỏ trỏđến: bằng cách cấp phát vùng nhớ
(địa chỉ bắt đầu và kích thước vùng nhớ tương ứng với kiểu) cho biến động để lưu trữ đối tượng và ta dùng một biến con trỏđể lưu giữ địa chỉ vùng nhớđĩ.
Trong C++, ta dùng hàm new để cấp phát vùng nhớ cho một biến động cĩ kiểu cơ sởT theo cú pháp sau:
BiếnConTrỏ = new KiểuCơSởT; // (1)
BiếnĐộng BiếnConTrỏ x
x
Khi đĩ, ta cĩ thể truy xuất đến (nội dung) biến động (khơng cĩ định danh riêng) thơng qua biến con trỏ như sau: *BiếnConTrỏ.
Hàm new cịn cĩ một cách sử dụng khác là:
BiếnConTrỏ = new KiểuCơSởT [ SốLượng] ; // (2)
để cấp phát vùng nhớ cho SốLượng đối tượng cĩ cùng kiểu KiểuCơSởT mà địa chỉ bắt đầu của vùng nhớ này được lưu giữ trong biến con trỏ BiếnConTrỏ.
Khi đĩ: địa chỉ bắt đầu vùng nhớ của đối tượng được cấp phát động thứ i (0 ≤ i ≤ SốLượng -1) được truy xuất bởi:
BiếnConTrỏ + i
và nội dung của đối tượng được cấp phát động thứ i (0 ≤ i ≤ SốLượng -1) được truy xuất bởi:
*(BiếnConTrỏ + i) hoặc BiếnConTrỏ[ i ]
Cú pháp truy xuất trên cũng đúng với “mảng động” đã biết: ptử *BiếnMảngĐộng;
BiếnMảngĐộng = new ptử [MAX];
* Hủy một biến động đã được cấp phát bởi tốn tửnew do biến con trỏ trỏ đến:
Để giải tỏa vùng nhớ của biến động đã được cấp phát trước đĩ bằng tốn tử
new do biến con trỏ BiếnConTrỏ trỏ đến, ta dùng tốn tử delete trong C++ như
sau:
delete BiếnConTrỏ;
hoặc: delete [ ]BiếnConTro;
tương ứng với tốn tử cấp phát vùng nhớ new ở dạng (1) hoặc (2) ở trên. * Ví dụ:
typedef struct { int diem; int tuoi;
hs *con_tro; int *p, *q; p = new int; *p = 6; con_tro = new hs; con_tro->diem = 9; // hoặc: (*con_tro).diem = 9; con_tro->tuoi = 18;
Minh họa một phần bộ nhớ Heap segment: … 6 *p 9 *con_tro 18 … Sau đĩ thi hành các lệnh:
delete con_tro; // giải toả vùng nhớ do con_tro chiếm giữ
q = new int;
Khi đĩ q cĩ thểtrỏđến vùng nhớ do biến con_tro trước đây trỏđến. *q = 8; … 6 *p 8 *q … … delete p; … … 8 *q … …
Dựa trên kiểu dữ liệu động cơ sở là con trỏ, ta cĩ thể xây dựng các kiểu dữ liệu động phong phú khác cĩ nhiều ứng dụng trên thực tế như: danh sách liên kết