Con trỏ Một con trỏ hay một biến con trỏ là: ¨ một biến chiếu đến một ô nhớ. ¨ nó lưu vị trí/địa chỉ của ô nhớ đó. n Hai ứng dụng chính: ¨ Truy nhập gián tiếp ¨ Bộ nhớ động n Vấn đề kỹ thuật: Nếu P là một biến con trỏ ¨ Làm thế nào để trỏ P đến một ô nhớ nào đó? ¨ Làm thế nào để truy nhập đến ô nhớ P trỏ đến? | Ôn tập về Con trỏ Lập trình hướng đối tượng Ôn tập con trỏ Cấp phát động Dynamic Allocation new delete Con trỏ lạc Dangling pointers Rò rỉ bộ nhớ Memory leakage Con trỏ mảng Array Pointer Các phép tính trên con trỏ Pointer Arithmetic Con trỏ tới bản ghi Cấp phát động mảng @ 2004 Trần Minh Châu. FOTECH. VNU 2 Con trỏ Một con trỏ hay một biến con trỏ là một biến chiếu đến một ô nhớ. nó lưu vị trí địa chỉ của ô nhớ đó. Hai ứng dụng chính Truy nhập gián tiếp Bộ nhớ động Vấn đề kỹ thuật Nếu P là một biến con trỏ Làm thế nào để trỏ P đến một ô nhớ nào đó Làm thế nào để truy nhập đến ô nhớ P trỏ đến int x 361 int y x 3 @ 2004 Trần Minh Châu. FOTECH. VNU Thao tác con trỏ Các ký hiệu từ khóa new delete int X Y int P P is an integer pointer variable Lệnh thứ hai khai báo một biến con trỏ P có giá trị chưa xác định nhưng khác Null. Biến con trỏ này có thể chỉ trỏ tới một ô nhớ chứa một số nguyên P Y trỏ P tới Y P lưu địa chỉ của Y P X ghi giá trị của biến X vào vùng bộ nhớ trỏ bởi P Ví dụ Y 5 variable Y stores value P X P points to memory location of X P Y same as writing X Y Sau ví dụ trên X 5 Y 5 và P trỏ tới X @ 2004 Trần Minh Châu. FOTECH. VNU 4 Ví dụ include iostream int main int x 10 int y 20 int p1 p2 p1 x p2 cout y x x endl cout y y endl cout p1 p1 endl cout p2 p2 endl endl p1 50 p2 90 cout cout cout x y p1 p2 x y endl endl p1 p2 endl endl endl cout p1 p2 cout x x endl cout y y endl cout p1 p1 endl cout p2 p2 endl endl x 10 y 20 p1 10 p2 20 x 50 y 90 p1 50 p2 90 x 50 y 90 p1 90 p2 90 @ 2004 Trần Minh Châu. FOTECH. VNU 5 Ký hiệu Đọc P là biến mà P trỏ tới Đọc X là địa chỉ của X là toán tử địa chỉ address of operator là toán tử thâm nhập dereferencing operator Giả sử P1 X và P2 Y thì P1 trỏ tới X và P2 trỏ tới Y P1 P2 Không tương đương với P1 P2 P1 P2 có hiệu quả trỏ P1 tới Y lệnh đó không thay đổi X Lệnh P1 P2 tương đương với X Y @ 2004 Trần Minh Châu. FOTECH. VNU