Tổ chức của chương trình
Địa chỉ
Biến con trỏ
Các thao tác trên biến con trỏ
Biến tĩnh và biến động
Cấp phát và hủy biến động
11 trang |
Chia sẻ: Mr Hưng | Lượt xem: 829 | Lượt tải: 0
Nội dung tài liệu Phần cứng máy tính - Con trỏ và quản lý bộ nhớ động, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Con trỏ và quản lý bộ nhớ độngHoàng Thân Anh TuấnKhoa Toán – Tin họcĐại học Sư phạm TPHCMNội dungTổ chức của chương trìnhĐịa chỉBiến con trỏCác thao tác trên biến con trỏBiến tĩnh và biến độngCấp phát và hủy biến độngTổ chức của chương trìnhMột chương trình được chia ra thành nhiều phân đoạn (segment).Mỗi segment có thể xem như là một mảng một chiều.Mỗi segment lưu một loại dữ liệu nhất định.Data Segment: lưu các biến toàn cụcStack Segment: lưu các biến cục bộ của các hàm và các thông tin khácHeap Segment: lưu các biến độngCode Segment: lưu các chỉ thị đoạn mã của chương trìnhĐịa chỉMột ô nhớ bất kỳ (một biến bất kỳ) trong chương trình có một địa chỉ duy nhất.Mỗi địa chỉ gồm có hai thành phần:Tên segment lưu biếnVị trí của biến trong segmentĐịa chỉ thường được ký hiệu là segment:offsetSegment có thể là Data, Heap, Code, StackOffset là vị trí của biến trong segment tương ứngVí dụint a;int main(){ int b; double c; return 0;}16128c40b1612840aStackDataBiến con trỏLà biến dùng để lưu giá trị địa chỉCú pháp khai báo một biến con trỏKiểu* tên-biến;Ý nghĩa: khai báo một biến con trỏ dùng để lưu địa chỉ của các biến thuộc kiểu đã chỉ ra.Biến con trỏ có kích thước 4 bytes (hệ điều hành 32 bit)Ví dụ:int* pint; // khai báo một biến con trỏ dùng để lưu địa chỉ của các biến thuộc kiểu int.double* p; // khai báo một biến con trỏ dùng để lưu địa chỉ của các biến thuộc kiểu double.Các thao tác trên con trỏPhép lấy địa chỉ:Kí hiệu: &Cú pháp: &tên-biếnÝ nghĩa: lấy địa chỉ của biến đi kèm. Biến được lấy địa chỉ phải thuộc kiểu mà con trỏ có thể lưu địa chỉ.Ví dụ: int a = 5;int* pa = &a; // pa sẽ lưu địa chỉ của biến aPhép khử địa chỉKí hiệu: *Cú pháp: *tên-biến-con-trỏÝ nghĩa: truy xuất đến vùng nhớ có địa chỉ đang được lưu bởi biến con trỏ đi kèmVí dụ:int a = 5;int* pa = &a;*pa = 6;cout << *pa;Biến tĩnh và biến độngBiến tĩnhBiến độngCó tênKhông có tênKích thước cố địnhKích thước không cố địnhĐược cấp phát tự động trong Data Segment hoặc Stack SegmentĐược cấp phát trong Heap SegmentPhạm vi sử dụng từ lúc khai báo đến hết khối gần nhất chứa nó.Phạm vi sử dụng bắt đầu từ lúc được tạo ra và kết thúc khi bị hủy.Tự động giải phóng khi hết phạm vi sử dụngKhông tự động giải phóng. Lập trình viên phải lo việc này.Cấp phát biến độngKhông có tên, chỉ có địa chỉ dùng biến con trỏ để lưu địa chỉ.Cú pháp:Biến-con-trỏ = new Kiểu; Biến-con-trỏ = new Kiểu[số phần tử];Ví dụ:int* p = new int;double* pd = new double[10];Hủy biến độngThông qua biến con trỏ lưu địa chỉ của biến động.Cú pháp:delete biến-con-trỏ;Delete [] biến-con-trỏ;Ví dụ:delete p;delete [] pd;
Các file đính kèm theo tài liệu này:
- con_tro_7936.ppt