tailieunhanh - Bài giảng Cơ sở lập trình 1: Chương 6 - Lê Cẩm Tú

Bài giảng Cơ sở lập trình 1: Chương 6 do Lê Cẩm Tú biên soạn trang bị cho người học những kiến thức về kiểu con trỏ. Các nội dung chính được trình bày trong chương này gồm có: Con trỏ và địa chỉ, khai báo con trỏ, con trỏ và mảng một chiều, con trỏ và mảng nhiều chiều, mảng các con trỏ,. . | Chương 6 KIỂU CON TRỎ Lê Quý Tài quytai3985@ Hà Nội – 2012 Nội dung 26/01/2012 Chương 6-Kiểu con trỏ 2 Con trỏ và địa chỉ 1 Khai báo con trỏ 2 Con trỏ và mảng một chiều 3 Con trỏ và mảng nhiều chiều 4 Mảng các con trỏ 5 Cấp phát bộ nhớ động 7 Con trỏ hàm 6 1. Con trỏ và địa chỉ Ví dụ: float a=; Xác định một biến có tên a có kiểu float và có giá trị . Máy cấp phát cho x một vùng nhớ gồm 4 byte liên tiếp. Địa chỉ của biến là số thứ tự của byte đầu tiên Có nhiều kiểu địa chỉ khác nhau tương ứng với các kiểu biến khác nhau. 26/01/2012 Chương 6-Kiểu con trỏ 3/50 3 Con trỏ và địa chỉ Con trỏ là một biến dùng để chứa địa chỉ. Có nhiều kiểu con trỏ tương ứng với nhiều loại địa chỉ. Ví dụ: Con trỏ kiểu int chứa địa chỉ các biến kiểu int *a là giá trị được lưu trong bộ nhớ có địa chỉ a &a là địa chỉ bộ nhớ chứa giá trị a 26/01/2012 Chương 6-Kiểu con trỏ 4/50 2. Khai báo con trỏ Khai báo trực tiếp *; Trong đó: * là toán tử con trỏ Ví dụ: int *p1,m,n; p1=&n; *p1=10; /* ô nhớ do con trỏ p1 trỏ đến được gán giá trị 10 */ Chú ý: Khi gán địa chỉ của 1 biến cho 1 biến con trỏ, mọi sự thay đổi trên nội dung ô nhớ con trỏ chỉ tới sẽ làm giá trị của biến thay đổi theo. Ví dụ: int *p2,a=10; p2=&a; *p2=*p2+3; Khi đó a sẽ có giá trị 13. 26/01/2012 Chương 6-Kiểu con trỏ 5/50 5 Khai báo con trỏ (tt) Khai báo gián tiếp Ví dụ Kích thước của con trỏ Con trỏ chỉ lưu địa chỉ nên kích thước của mọi con trỏ là như nhau: Môi trường MD-DOS (16 bit): 2 bytes Môi trường Windows (32 bit): 4 bytes typedef *; ; typedef int *pint; int *p1; pint p2, p3; 26/01/2012 Chương 6-Kiểu con trỏ 6/50 6 Con trỏ NULL Khái niệm Con trỏ NULL là con trỏ không trỏ và đâu cả. Khác với con trỏ chưa được khởi tạo. NULL int n; int *p1 = &n; int *p2; // unreferenced local varialbe int *p3 = NULL; 26/01/2012 Chương 6-Kiểu con trỏ 7/50 7 Khởi tạo kiểu con trỏ Khởi tạo Khi mới khai báo, biến con trỏ được đặt