Danh mục

Bài giảng Cơ sở lập trình - Chương 6: Kiểu con trỏ

Số trang: 50      Loại file: pptx      Dung lượng: 331.89 KB      Lượt xem: 19      Lượt tải: 0    
Thư viện của tui

Xem trước 5 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng Cơ sở lập trình Chương 6 Kiểu con trỏ nhằm trình bày về 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ỏ....Bài giảng được trình bày khoa học, súc tích giúp các bạn sinh viên tiếp thu bài học nhanh.
Nội dung trích xuất từ tài liệu:
Bài giảng Cơ sở lập trình - Chương 6: Kiểu con trỏ Chương 6 KIỂU CON TRỎ Khoa Hệ thống thông tin quản lý Hà Nội – 2013 Nội dung 1 Con trỏ và địa chỉ 2 Khai báo con trỏ 3 Con trỏ và mảng một chiều 4 Con trỏ và mảng nhiều chiều 5 Mảng các con trỏ 6 Con trỏ hàm 7 Cấp phát bộ nhớ động 4/23/14 Chương 6-Kiểu con trỏ 2 1. Con trỏ và địa chỉ o Ví dụ: float a=10.12; n Xác định một biến có tên a có kiểu float và có giá trị 10.12. n Máy cấp phát cho x một vùng nhớ gồm 4 byte liên tiếp. n Địa chỉ của biến là số thứ tự của byte đầu tiên o Có nhiều kiểu địa chỉ khác nhau tương ứng với các kiểu biến khác nhau. 4/23/14 Chương 6-Kiểu con trỏ 3/50 Con trỏ và địa chỉ o 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ỉ. n Ví dụ: o Con trỏ kiểu int chứa địa chỉ các biến kiểu int… o *a là giá trị được lưu trong bộ nhớ có địa chỉ a o &a là địa chỉ bộ nhớ chứa giá trị a 4/23/14 Chương 6-Kiểu con trỏ 4/50 2. Khai báo con trỏ o Khai báo trực tiếp *; Trong đó: * là toán tử con trỏ n Ví dụ: int *p1,m,n; p1=&n; *p1=10; /* ô nhớ do con trỏ p1 trỏ đến được gán giá trị 10 */ o 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. n Ví dụ: int *p2,a=10; p2=&a; *p2=*p2+3; Khi đó a sẽ có giá trị 13. 4/23/14 Chương 6-Kiểu con trỏ 5/50 Khai báo con trỏ (tt) o Khai báo gián tiếp typedef *; ; n Ví dụ typedef int *pint; int *p1; pint p2, p3; o Kích thước của con trỏ n Con trỏ chỉ lưu địa chỉ nên kích thước của mọi con trỏ là như nhau: o Môi trường MD-DOS (16 bit): 2 bytes o Môi trường Windows (32 bit): 4 bytes 4/23/14 Chương 6-Kiểu con trỏ 6/50 Con trỏ NULL o Khái niệm n Con trỏ NULL là con trỏ không trỏ và đâu cả. n Khác với con trỏ chưa được khởi tạo. int n; int *p1 = &n; int *p2; // unreferenced local varialbe int *p3 = NULL; NULL 4/23/14 Chương 6-Kiểu con trỏ 7/50 Khởi tạo kiểu con trỏ o Khởi tạo = &; n Khi mới khai báo, biến con trỏ được đặt ở địa chỉ nào đó (không biết trước).  chứa giá trị không xác định  trỏ đến vùng nhớ không biết trước. n Đặt địa chỉ của biến vào con trỏ (toán tử &) o Ví dụ int a, b; int *pa = &a, *pb; pb = &b; 4/23/14 Chương 6-Kiểu con trỏ 8/50 Sử dụng con trỏ o Truy xuất đến ô nhớ mà con trỏ trỏ đến n Con trỏ chứa một số nguyên chỉ địa chỉ. n Sử dụng toán tử *. o Ví dụ int n=10; int *p; printf(\nDia chi cua n: %p,&n); printf(\nGia tri cua n: %d,n); p=&n; //Con tro p tro toi n printf(\nDia chi cua con tro: %p,&p); printf(\nGia tri cua con tro: %p,p); printf(\nGia tri duoc tro toi la: %d,*p); 4/23/14 Chương 6-Kiểu con trỏ 9/50 Sử dụng con trỏ (tt) o Sử dụng tên con trỏ n Giá trị của con trỏ (địa chỉ của biến) được sử dụng trong biểu thức n Nếu tên con trỏ ở bên trái toán tử gán thì giá tr ị của biểu thức bên phải phải là địa chỉ. n Ví dụ: float a,*p,*q; p=&a; q=p; è Kết quả con trỏ q chứa địa chỉ của biến a o Sử dụng dạng khai báo n Ví dụ: float x,*px; px=&x; //px trỏ tới x n Nếu con trỏ px trỏ tới biến x thì cách viết x và *px là tương đương trong mọi ngữ cảnh. 4/23/14 Chương 6-Kiểu con trỏ 10/50 Các cách truyền đối số o Truyền giá trị (tham trị) #include void hoanvi(int x, int y); main() { int a = 5; b = 6; hoanvi(a, b); printf(“a = %d, b = %d”, a, b); } void hoanvi(int x, int y) { int t = x; x = y; y = t; } 4/23/14 Chương 6-Kiểu con trỏ 11/50 Các cách truyền đối số o Truyền địa chỉ (con trỏ) #include void hoanvi(int *x, int *y); main() { int a = 2912; b = 1706; hoanvi(&a, &b); printf(“a = %d, b = %d”, a, b); } void hoanvi(int *x, int *y) { int t = *x; *x = *y; *y = t; } 4/23/14 Chương 6-Kiểu con trỏ 12/50 Các cách truyền đối số o Truyền tham chiếu (C++) #include void hoanvi(int &x, int &y); main() { int a = 2912; b = 1706; hoanvi(a, b); printf(“a = %d, b = %d”, a, b); } void hoanvi(int &x, int &y) { int t = x; x = y; y = t; } 4/23/14 Chương 6-Kiểu con trỏ 13/50 Một số lưu ý o Một số lưu ý n Con trỏ là khái niệm quan trọng và khó nhất trong C. n Nắm rõ quy tắc sau, ví dụ int a, *pa = &a; o *pa và a đều chỉ nội dung của biến a. o pa và &a đều chỉ địa chỉ của biến a. n Không nên sử dụng con trỏ khi chưa được khởi ...

Tài liệu được xem nhiều: