Hướng dẫn check cấp phát con trỏ
Trước tiên,tôi xin cung cấp link sau.Đây là bài viết rất rõ ràng của tác giả langman trên congdongcviet.Tôi nghĩ xem hết loạt kiến thức đó là quá đủ để hiểu về con trỏ rồi.Tuy nhiên,ở bài viết này.Tôi cũng muốn trình bày lại 1 ít kiếnthức cơ bản về con trỏ để các bạn dễ nhìn nhận vấn đề.và hơn nữa,nó cũng mạch lạc với loạt bài tôi viết. link bài viết của langman -congdongcviet.com http://diendan.congdongcviet.com/showthread.php?t=42977 Các vấn đề được đưa ra 1/ con trỏ là gì 2/ tại sao lại phải dùng con trỏ 3/ con trỏ hàm,lớp … 4/ cấp phát và giải phóng bộ nhớ 5/ toán tử new và delete Phần 1 ,2,3: Khái niệm về con trỏ: Con trỏ thực chất chỉ là 1 biến nguyên,nó mang giá trị của ô nhớ mà nó trỏ đến. Như vậy.Dù được sử dụng như thế nào đi nữa,thì nó cũng chỉ là 1 biến nguyên.Trên các hệ thống 32bit nó có độ dài là 4byte.Vì sao lại là 4byte.Vì khi 1 vùng nhớ ảo cho mỡi tiến trình (đã trình bày ở chương 1).Thì chỉ cần 4byte là đủ đánh địa chỉ cho tất cả các ô nhớ ảo rồi. Công dụng của nó thì cứ làm đi,sử dụng nó đi rồi biết. khai báo : Code:
char * q; float * h; … Gán ô nhớ cho con trỏ trỏ đến. Ta sẽ xét trường hợp trên,thử printf ra xem sao : Code:
Ta build ở chế độ debug,không cần optimize,chỉ để hiểu thôi Kết quả : 20 0032F9E8 0032F9E8 20 0032F9DC Ta có thể thấy rằng 20 là giá trị của biến a,tại ô nhớ của biến a(ô nhớ này được đánh số 0032F9E8 tức là 0032F9DC) ô nhớ chứa con trỏ p đánh giá trị 0032:F9DC và có giá trị là 0032F9DC ta chỉ cần dùng *p là có thể lấy được giá trị của a; Con trỏ đa cấp Là loại con trỏ .. trỏ đến con trỏ.Thật dễ hiểu phải không !! Code:
int **q=&p; int * p = &a; printf(“%d – %d -%p -%d -%d -%p \n”,p,*p,&p,max,*max,&max); Con trỏ void Là con trỏ đặc biệt,thích trỏ đi đâu trỏ.Có thể trỏ đến 1 vùng nhớ mang kiểu int,char … Gán địa chỉ cho con trỏ : Con trỏ hàm : vâng, hàm vẫn cứ làm theo nguyên tắc 1 và 1 bản sao của con trỏ được tạo ra, và hàm làm việc với bản sao hàm, và trước khi gọi hàm con trỏ trỏ vào đâu thì nó vẫn được trỏ vào đấy chứng minh : Code: ` include |