Bài giảng Phương pháp lập trình - Chương 5: Con trỏ (2016)
lượt xem 5
download
Bài giảng Phương pháp lập trình - Chương 5: Con trỏ trình bày địa chỉ con trỏ, khái niệm và khai báo biến con trỏ, toán tử con trỏ, các thao tác trên biến con trỏ, cấp phát và giải phóng bộ nhớ, con trỏ và mảng, mảng con trỏ. Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Phương pháp lập trình - Chương 5: Con trỏ (2016)
- Chương 5
- Nội dung trình bày 1. Địa chỉ 2. Khái niệm và khai báo biến con trỏ 3. Toán tử con trỏ 4. Các thao tác trên biến con trỏ 5. Cấp phát và giải phóng bộ nhớ 6. Con trỏ và mảng 7. Mảng con trỏ 2
- 1. Địa chỉ (Address) Mỗi biến đều có 2 thuộc tính: địa chỉ (address) và giá trị (value) ◦Ví dụ: int i=11, j=22, k=33; Trong bộ nhớ: + Tại địa chỉ 53AD78 có giá trị là 11 + Tại địa chỉ 53AD7C có giá trị là 22 + Tại địa chỉ 53AD80 có giá trị là 33 Để lấy địa chỉ của 1 biến: dùng dấu & trước tên biến. Ví dụ:… 3
- Nội dung trình bày 1. Địa chỉ 2. Khái niệm và khai báo biến con trỏ 3. Toán tử con trỏ 4. Các thao tác trên biến con trỏ 5. Cấp phát và giải phóng bộ nhớ 6. Con trỏ và mảng 7. Mảng con trỏ 4
- 2. Khái niệm và khai báo con trỏ Khái niệm con trỏ: Là một biến mà giá trị của nó chứa một địa chỉ Cách khai báo biến con trỏ: tương tự khai báo biến thông thường, có thêm dấu * vào trước tên biến Ví dụ: int *ia; int x, *p, *q; Không được dùng biến con trỏ khi con trỏ chưa được khởi tạo giá trị Giá trị gán cho con trỏ phải là một địa chỉ, ví dụ: p = &x; 5
- 2. Khái niệm và khai báo con trỏ: Ví dụ int i=11, j=22, k=33; int *iPtr, *jPtr, *kPtr; iPtr = &i; jPtr = &j; iPtr, jPtr là 2 biến con trỏ lần lượt chứa địa chỉ của i, j Vậy: nếu gán iPtr = i là sai 6
- Nội dung trình bày 1. Địa chỉ 2. Khái niệm và khai báo biến con trỏ 3. Toán tử con trỏ 4. Các thao tác trên biến con trỏ 5. Cấp phát và giải phóng bộ nhớ 6. Con trỏ và mảng 7. Mảng con trỏ 7
- 3. Toán tử con trỏ Toán tử * : lấy giá trị tại địa chỉ chứa trong biến con trỏ Ví dụ: 1234 10 50 i int i; 1236 int *ia; 1238 i = 10; 1240 ia 1234 ia = &i; cout
- 3. Toán tử con trỏ: Ví dụ #include // kết quả xuất ra màn hình #include a = 15 void main () b = 20 { int a = 20, b = 15, *pa, *pb, temp; pa = &a; // con trỏ pa chứa địa chỉ của a pb = &b; // con trỏ pb chứa địa chỉ của b temp = *pa; *pa = *pb; *pb = temp; cout
- Nội dung trình bày 1. Địa chỉ 2. Khái niệm và khai báo biến con trỏ 3. Toán tử con trỏ 4. Các phép toán số học trên con trỏ 5. Cấp phát và giải phóng bộ nhớ 6. Con trỏ và mảng 7. Mảng con trỏ 10
- 4. Các phép toán số học trên con trỏ Phép gán Phép cộng, trừ một con trỏ với một số nguyên Phép tăng, giảm 11
- 4. Các phép toán số học trên con trỏ (tt) Phép gán con trỏ ◦Hai biến con trỏ cùng kiểu có thể gán cho nhau Ví dụ: int x; int *p1, *p2; p1 = &x; p2 = p1; Sau khi đoạn lệnh trên được thực hiện, cả p1 và p2 cùng trỏ đến biến x 12
- 4. Các phép toán số học trên con trỏ (tt) Phép cộng, trừ một con trỏ với một số nguyên ◦Khi cộng hoặc trừ 1 con trỏ với 1 số nguyên N; kết quả trả về là 1 con trỏ ◦Con trỏ này sẽ chỉ đến vùng nhớ cách vùng nhớ của con trỏ hiện tại một số nguyên lần kích thước của kiểu dữ liệu của nó 13
- 4. Các phép toán số học trên con trỏ (tt) Ví dụ : char *a; short *b; long *c; Giả sử các con trỏ a, b, c lần lượt trỏ tới ô nhớ 1000, 2000 và 3000 a = a + 1; // con trỏ a dời đi 1 byte b = b + 1; // con trỏ b dời đi 2 byte c = c + 1; // con trỏ c dời đi 4 byte 14
- 4. Các phép toán số học trên con trỏ (tt) 15
- Nội dung trình bày 1. Địa chỉ 2. Khái niệm và khai báo biến con trỏ 3. Toán tử con trỏ 4. Các phép toán số học trên con trỏ 5. Cấp phát và giải phóng bộ nhớ 6. Con trỏ và mảng 7. Mảng con trỏ 16
- 5. Cấp phát và giải phóng bộ nhớ Cấp phát động là phương tiện nhờ đó một chương trình có thể dành thêm bộ nhớ trong khi đang thực thi hoặc giải phóng bộ nhớ khi không cần thiết C/C++ có hai hệ thống cấp phát động: một hệ thống được định nghĩa bởi C và một được định nghĩa bởi C++ 17
- 5. Cấp phát và giải phóng bộ nhớ Cấp phát và giải phóng bộ nhớ động được định nghĩa bởi C, trong thư viện stdlib.h ◦void *malloc(length): dùng để cấp phát bộ nhớ length: là số byte muốn cấp phát Hàm malloc() trả về một con trỏ có kiểu void, do đó có thể ép kiểu nó cho con trỏ có kiểu bất kỳ Sau khi cấp phát thành công, hàm malloc() trả về địa chỉ của byte đầu tiên của vùng nhớ. Nếu không thành công (không có đủ vùng nhớ), hàm malloc() trả về null ◦void free(void *p): dùng để thu hồi bộ nhớ được cấp phát bởi hàm malloc 18
- 5. Cấp phát và giải phóng bộ nhớ Ví dụ 1: char *p; p = (char *) malloc(1000); //cấp phát 1000 bytes Vì hàm malloc() trả về con trỏ kiểu void, nên phải ép kiểu nó thành con trỏ char cho phù hợp với biến con trỏ p Ví dụ 2: int *p; p = (int *) malloc(50*sizeof(int)); … free(p); 19
- 5. Cấp phát và giải phóng bộ nhớ Cấp phát và giải phóng bộ nhớ động được định nghĩa bởi C++ ◦Toán tử new cấp phát bộ nhớ và trả về một con trỏ đến byte đầu tiên của vùng nhớ được cấp phát ◦Toán tử delete thu hồi vùng nhớ được cấp phát trước đó bởi toán tử new 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Phương pháp lập trình: Chương 1 - GV. Từ Thị Xuân Hiền
18 p | 132 | 17
-
Bài giảng Phương pháp lập trình: Chương 2 - GV. Từ Thị Xuân Hiền
50 p | 107 | 15
-
Bài giảng Phương pháp lập trình: Chương 6 - GV. Từ Thị Xuân Hiền
39 p | 105 | 15
-
Bài giảng Phương pháp lập trình: Chương 3 - GV. Từ Thị Xuân Hiền
29 p | 117 | 12
-
Bài giảng Phương pháp lập trình: Chương 5 - GV. Từ Thị Xuân Hiền
37 p | 114 | 12
-
Bài giảng Phương pháp lập trình: Chương 4 - GV. Từ Thị Xuân Hiền
19 p | 104 | 11
-
Bài giảng Phương pháp lập trình: Chương 7 - GV. Từ Thị Xuân Hiền
18 p | 117 | 11
-
Bài giảng Phương pháp lập trình: Chương 9 - GV. Từ Thị Xuân Hiền
36 p | 101 | 10
-
Bài giảng Phương pháp lập trình: Chương 3
23 p | 115 | 10
-
Bài giảng Phương pháp lập trình: Chương 8 - GV. Từ Thị Xuân Hiền
25 p | 102 | 10
-
Bài giảng Phương pháp lập trình: Chương 6 (tiếp theo)
43 p | 85 | 9
-
Bài giảng Phương pháp lập trình: Chương 4
9 p | 96 | 6
-
Bài giảng Phương pháp lập trình hướng đối tượng: Bài tập 5 - Trần Phước Tuấn
4 p | 114 | 6
-
Bài giảng Phương pháp lập trình: Chương 7
16 p | 71 | 4
-
Bài giảng Phương pháp lập trình - Chương 1: Phương pháp lập trình (2016)
64 p | 73 | 4
-
Bài giảng Phương pháp lập trình: Bài 2 - TS. Ngô Hữu Dũng
45 p | 73 | 4
-
Bài giảng Phương pháp lập trình: Bài 4 - TS. Ngô Hữu Dũng
51 p | 92 | 4
-
Bài giảng Phương pháp lập trình: Bài 11 - TS. Ngô Hữu Dũng
42 p | 62 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn