Con Trỏ (Pointer) Trịnh Tấn Đạt Khoa CNTT Đại Học Sài Gòn Email trinhtandatsgu edu vn Website https sites google comsitettdat88 Nội dung ▪ Biến tĩnh vs Biến động ▪ Con trỏ ▪ Các phép toán trên con trỏ ▪ Con trỏ và mảng một chiều ▪ Cấp phát vùng nhớ động ▪ Con trỏ cấp 2 ▪ Con trỏ và mảng nhiều chiều ▪ Mảng con trỏ ▪ Con trỏ hằng, void ▪ Con trỏ hàm (option) Khai báo biến trong C ❖ Quy trình xử lý của trình biên dịch ▪ Dành riêng một vùng nhớ với địa chỉ duy nhất để lưu biến đó ▪ Liên kết đị.
Con Trỏ (Pointer) Trịnh Tấn Đạt Khoa CNTT - Đại Học Sài Gòn Email: trinhtandat@sgu.edu.vn Website: https://sites.google.com/site/ttdat88/ Nội dung ▪ Biến tĩnh vs Biến động ▪ Con trỏ ▪ Các phép toán trỏ ▪ Con trỏ mảng chiều ▪ Cấp phát vùng nhớ động ▪ Con trỏ cấp ▪ Con trỏ mảng nhiều chiều ▪ Mảng trỏ ▪ Con trỏ hằng, void ▪ Con trỏ hàm (option) Khai báo biến C ❖ ▪ ▪ ▪ Quy trình xử lý trình biên dịch Dành riêng vùng nhớ với địa để lưu biến Liên kết địa nhớ với tên biến Khi gọi tên biến, truy xuất tự động đến ô nhớ liên kết với tên biến Ví dụ: int a = 5; // Giả sử địa lưu trữ biến a 0x6 0x2 0x6 0xA … int B[3]; // Giả sử địa lưu trữ biến mảng B 0x2 0x2 0x6 0xA 0xE … Biến tĩnh vs Biến động ▪ Một số hạn chế gặp phải sử dụng biến tĩnh: o Cấp phát ô nhớ dư, gây lãng phí nhớ o Cấp phát ô nhớ thiếu, chương trình thực thi bị lỗi ▪ Biến động: o Khi chạy chương trình, kích thước biến, vùng nhớ địa vùng nhớ cấp phát cho biến thay đổi o Sau sử dụng xong giải phóng để tiết kiệm chỗ nhớ ▪ Biến (variable): Biến ô nhớ đơn lẻ vùng nhớ hệ điều hành cấp phát cho chương trình C++ nhằm để lưu trữ giá trị vào bên vùng nhớ Ví dụ: int m; // vùng nhớ có kích thước bytes cấp phát Virtual memory & Physical memory ❖ Virtual memory & Physical memory ▪ Chúng ta trỏ đến vùng nhớ ảo (virtual memory) máy tính, cịn việc truy xuất đến nhớ vật lý (physical memory) từ nhớ ảo phải thực thiết bị phần cứng có tên Memory management unit (MMU) chương trình định vị địa nhớ gọi Virtual address space Variable address & address-of operator ▪ Địa biến (variable address) mà nhìn thấy thật giá trị đánh số thứ tự đặt Virtual memory ▪ Để lấy địa ảo biến chương trình, sử dụng toán tử lấy địa (address-of operator) ‘&’ đặt trước tên biến Ví dụ: int x = 5; cout