YOMEDIA
ADSENSE
Bài giảng Nhập môn Lập trình: Chương 11
35
lượt xem 4
download
lượt xem 4
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Bài giảng Nhập môn Lập trình: Chương 11 trình bày các nội dung chính sau: Con trỏ, khái niệm và cách sử dụng con trỏ, con trỏ và mảng 1 chiều, truyền mảng 1 chiều cho hàm, phép toán số học trên con trỏ,... Mời các bạn cùng tham khảo để nắm nội dung chi tiết.
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Nhập môn Lập trình: Chương 11
- NHẬP MÔN LẬP TRÌNH BÀI 14: CON TRỎ
- CĐR buổi học • Sau khi học xong buổi học, sinh viên có khả năng: • Hiểu được khái niệm con trỏ, địa chỉ của biến và quản lý các biến trong C/C++. • Sử dụng con trỏ trong lập trình • Biết được một số thuật ngữ và tiếng Anh tương ứng 2
- Bảng các thuật ngữ Việt- Anh liên quan nội dung con trỏ Thuật ngữ tiếng Việt Thuật ngữ tiếng Anh Con trỏ Pointer Hằng con trỏ Constant pointer Địa chỉ bộ nhớ Memory Address Toán tử & Address-of Operator Dereferencing Operator, or: Indirection Toán tử * Operator Cấp phát bộ nhớ Memory Allocation Giải phóng bộ nhớ De-Allocate Memory Cấp phát tĩnh Static Memory Allocation Cấp phát động Dynamic Memory Allocation Biến động Dynamic Variable Phép toán số học trên con trỏ Pointer Arithmetic NMLT - CON TRỎ CƠ BẢN 3
- Nội dung 1. Khái niệm và cách sử dụng con trỏ 2. Con trỏ và mảng 1 chiều 3. Bài tập NMLT - Con trỏ và cấp phát động 4
- 1. Khái niệm và cách sử dụng 1.1 Biến và vùng nhớ 1.2 Khái niệm con trỏ 1.3 Khai báo con trỏ 1.4 Con trỏ và toán tử &, * 1.5 Con trỏ NULL 1.6 Kích cỡ con trỏ 1.7 Từ khóa const và con trỏ 1.8 Con trỏ và hàm Bài tập Một số lưu ý NMLT - CON TRỎ CƠ BẢN 5
- 1.1 Biến và vùng nhớ • Bộ nhớ máy tính Địa chỉ 1 byte • Bộ nhớ RAM chứa rất nhiều ô nhớ, ô nhớ 0 mỗi ô nhớ có kích thước 1 byte. 1 2 • Mỗi ô nhớ có địa chỉ duy nhất và địa 3 chỉ này được đánh số từ 0 trở đi. 4 5 • RAM để lưu trữ mã chương trình và 6 dữ liệu trong suốt quá trình thực thi. 7 . . . . . . … Memory Layout (bytes) NMLT - CON TRỎ CƠ BẢN 6
- 1.1 Biến và vùng nhớ • Khi khai báo biến, máy tính sẽ dành riêng một vùng nhớ để lưu biến đó. • Khi tên biến được gọi, máy tính sẽ thực hiện 2 bước sau: • Tìm kiếm địa chỉ ô nhớ của biến. • Truy xuất hoặc thiết lập giá trị của biến được lưu trữ tại ô nhớ đó. NMLT - CON TRỎ CƠ BẢN 7
- 1.1 Biến và vùng nhớ Địa chỉ ô nhớ 0 1 x ch 2 3 a int main() { 4 char ch=‘x’; 5 7 int a = 7; 6 } 7 . . . . . . … Memory Layout (bytes) NMLT - CON TRỎ CƠ BẢN 8
- Toán tử & và * • Toán tử & (Address-of Operator) đặt trước tên biến và cho biết địa chỉ của vùng nhớ của biến. • Toán tử * (Dereferencing Operator hay Indirection Operator) đặt trước một địa chỉ và cho biết giá trị lưu trữ tại địa chỉ đó. • Ví dụ: NMLT - CON TRỎ CƠ BẢN 9
- Toán tử & và * int value; 0x50 value 3200 value = 3200; Memory Layout cout
- 1.2 Khái niệm con trỏ • Khái niệm: Con trỏ (Pointer) là một biến lưu trữ địa chỉ của một địa chỉ bộ nhớ. Địa chỉ này thường là địa chỉ của một biến khác. VD: Biến x chứa địa chỉ của biến y. Vậy ta nói biến x “trỏ tới” y. • Phân loại con trỏ: Con trỏ kiểu int dùng để chứa địa chỉ của các biến kiểu int. Tương tự ta có con trỏ kiểu float, double, … NMLT - CON TRỎ CƠ BẢN 11
- 1.3 Khai báo con trỏ • Khai báo • Giống như mọi biến khác, biến con trỏ muốn sử dụng cũng cần phải được khai báo. *; • Ví dụ Memory Layout 0x50 char char1; 0x80 char1 int *ptrI; ptrI float *ptrF; 0x10 ptrF NMLT - CON TRỎ CƠ BẢN 12
- 1.4 Con trỏ và toán tử &, * • Toán tử & dùng trong khởi tạo giá trị cho con trỏ * = & ; • Ví dụ: 0x34 a 0x90 int a; int *ptr = &a; ptr 0x34 Memory Layout ? double a; int *ptr = &a; NMLT - CON TRỎ CƠ BẢN 13
- 1.4 Con trỏ và toán tử &, * • Toán tử * đặt trước biến con trỏ cho phép truy xuất đến giá trị ô nhớ mà con trỏ trỏ đến. • Ví dụ int a = 1000; 0x34 int *ptr = &a; a 3201 3200 1000 cout
- Ví dụ #include using namespace std; int main() { int a; int *ptr; int value; a = 3200; ptr = &a; value = --(*ptr); } Memory Layout NMLT - CON TRỎ CƠ BẢN 15
- Ví dụ #include using namespace std; 0x34 int main() { a 3199 3200 int a; int *ptr; 0x90 int value; ptr 0x34 a = 3200; ptr = &a; 0x50 value = --(*ptr); value 3199 } Memory Layout NMLT - CON TRỎ CƠ BẢN 16
- Ví dụ value = 3199 ptr = 0x34 0x34 a = 3199 a 3199 &value = 0x50 &ptr = 0x90 0x90 &a = 0x34 ptr 0x34 *ptr = 3199 0x50 &(*ptr) = 0x34 value 3199 *(*ptr) = error *(&(*ptr)) = 3199 Memory Layout NMLT - CON TRỎ CƠ BẢN 17
- Phép gán con trỏ • Có thể gán biến con trỏ: int *p1, *p2; p2 = p1; Gán một con trỏ cho con trỏ khác “Chỉ định p2 trỏ tới nơi mà p1 đang trỏ tới“ Dễ bị lẫn với: *p2 = *p1; Gán “giá trị trỏ bởi p1” cho “giá trị trỏ bởi p2” NMLT - CON TRỎ CƠ BẢN 18
- Ví dụ p1 27 p1 27 p1 = p2 p2 5 p2 5 p1 27 p1 5 *p1 = *p2 p2 5 p2 5 NMLT - CON TRỎ VÀ CẤP PHÁT ĐỘNG 19
- 1.5 Con trỏ NULL • Khái niệm • Con trỏ NULL là con trỏ không trỏ vào đâu cả. • Khác với con trỏ chưa được khởi tạo. int n; int *p1 = &n; int *p2; // unreferenced local variable int *p3 = NULL; NULL NMLT - CON TRỎ CƠ BẢN 20
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
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