
Bài giảng Kỹ thuật lập trình: Con trỏ - ThS. Trần Ngọc Bảo Duy
lượt xem 0
download

Bài giảng Kỹ thuật lập trình - "Con trỏ", được biên soạn gồm các nội dung chính sau: Tổ chức bộ nhớ thực thi; Con trỏ; Cấp phát bộ nhớ động; Một số vấn đề khác về 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 Kỹ thuật lập trình: Con trỏ - ThS. Trần Ngọc Bảo Duy
- Pointer ThS. Trần Ngọc Bảo Duy Con trỏ Tổ chức bộ nhớ thực thi Con trỏ Kỹ thuật Lập trình (CO1027) Tại sao phải có con trỏ? Mô hình con trỏ Ngày 4 tháng 4 năm 2021 Khai báo con trỏ Cấp phát bộ nhớ động Con trỏ và mảng Cấp phát bộ nhớ động Một số vấn đề khác ThS. Trần Ngọc Bảo Duy về con trỏ Khoa Khoa học và Kỹ thuật Máy tính Trường Đại học Bách Khoa, ĐHQG-HCM Pointer.1
- Pointer Tổng quan ThS. Trần Ngọc Bảo Duy 1 Tổ chức bộ nhớ thực thi Tổ chức bộ nhớ thực 2 Con trỏ thi Tại sao phải có con trỏ? Con trỏ Mô hình con trỏ Tại sao phải có con trỏ? Mô hình con trỏ Khai báo con trỏ Khai báo con trỏ Cấp phát bộ nhớ động Con trỏ và mảng Cấp phát bộ nhớ động 3 Cấp phát bộ nhớ động Một số vấn đề khác Con trỏ và mảng về con trỏ Cấp phát bộ nhớ động 4 Một số vấn đề khác về con trỏ Pointer.2
- Pointer ThS. Trần Ngọc Bảo Duy TỔ CHỨC BỘ NHỚ Tổ chức bộ nhớ thực thi Con trỏ THỰC THI TRONG Tại sao phải có con trỏ? Mô hình con trỏ Khai báo con trỏ Cấp phát bộ nhớ động C/C++ Con trỏ và mảng Cấp phát bộ nhớ động Một số vấn đề khác về con trỏ Pointer.3
- Pointer Tổ chức bộ nhớ thực thi ThS. Trần Ngọc Bảo Duy Khi chương trình được lên bộ nhớ để thực thi, hệ thống tổ chức bộ nhớ như hình vẽ: Tổ chức bộ nhớ thực thi Vùng TEXT: Con trỏ 1 Chứa mã thực thi Tại sao phải có con trỏ? Mô hình con trỏ của chương trình. Khai báo con trỏ Cấp phát bộ nhớ động 2 Vùng này chỉ đọc. Con trỏ và mảng Cấp phát bộ nhớ động 3 Vùng này có thể Một số vấn đề khác dùng chung trong về con trỏ trường hợp chương trình thực thi thường xuyên. Pointer.4
- Pointer Tổ chức bộ nhớ thực thi ThS. Trần Ngọc Bảo Duy Khi chương trình được lên bộ nhớ để thực thi, hệ thống tổ chức bộ nhớ như hình vẽ: Tổ chức bộ nhớ thực thi Con trỏ Tại sao phải có con trỏ? Mô hình con trỏ Vùng DATA gồm: Khai báo con trỏ Cấp phát bộ nhớ động 1 Dữ liệu được khởi Con trỏ và mảng động. Cấp phát bộ nhớ động Một số vấn đề khác 2 Dữ liệu không về con trỏ được khởi động. Pointer.4
- Pointer Tổ chức bộ nhớ thực thi ThS. Trần Ngọc Bảo Duy Khi chương trình được lên bộ nhớ để thực thi, hệ thống tổ chức bộ nhớ như hình vẽ: Tổ chức bộ nhớ thực Vùng dữ liệu được thi khởi động: giữ biến Con trỏ Tại sao phải có con trỏ? toàn cục và biến tĩnh Mô hình con trỏ Khai báo con trỏ (static), bao gồm 2 Cấp phát bộ nhớ động vùng con: Con trỏ và mảng Cấp phát bộ nhớ động 1 Chỉ đọc: Hằng Một số vấn đề khác chuỗi. về con trỏ 2 Đọc/ ghi: Các biến tĩnh và toàn cục không hằng. Pointer.4
- Pointer Tổ chức bộ nhớ thực thi ThS. Trần Ngọc Bảo Duy Khi chương trình được lên bộ nhớ để thực thi, hệ thống tổ chức bộ nhớ như hình vẽ: Tổ chức bộ nhớ thực thi Con trỏ Vùng dữ liệu không Tại sao phải có con trỏ? được khởi động: giữ Mô hình con trỏ Khai báo con trỏ biến toàn cục và biến Cấp phát bộ nhớ động tĩnh (static). Hệ thống Con trỏ và mảng Cấp phát bộ nhớ động khởi động về 0 (số) Một số vấn đề khác cho các biến không về con trỏ được người lập trình chủ động khởi động. Pointer.4
- Pointer Tổ chức bộ nhớ thực thi ThS. Trần Ngọc Bảo Duy Khi chương trình được lên bộ nhớ để thực thi, hệ thống tổ chức bộ nhớ như hình vẽ: Tổ chức bộ nhớ thực thi Con trỏ Vùng HEAP gồm: Tại sao phải có con trỏ? Mô hình con trỏ 1 Chứa bộ nhớ xin Khai báo con trỏ Cấp phát bộ nhớ động cấp phát động bởi Con trỏ và mảng người lập trình. Cấp phát bộ nhớ động Một số vấn đề khác 2 Liên quan đến Kiểu về con trỏ dữ liệu con trỏ nói trong chương này. Pointer.4
- Pointer Tổ chức bộ nhớ thực thi ThS. Trần Ngọc Bảo Duy Khi chương trình được lên bộ nhớ để thực thi, hệ thống tổ chức bộ nhớ như hình vẽ: Tổ chức bộ nhớ thực thi Con trỏ Tại sao phải có con trỏ? Vùng STACK gồm: Mô hình con trỏ Khai báo con trỏ 1 Các biến được khai Cấp phát bộ nhớ động báo trong chương Con trỏ và mảng Cấp phát bộ nhớ động trình. Một số vấn đề khác về con trỏ 2 Thông tin mỗi lần gọi hàm. Pointer.4
- Pointer ThS. Trần Ngọc Bảo Duy Tổ chức bộ nhớ thực thi Con trỏ CON TRỎ Tại sao phải có con trỏ? Mô hình con trỏ Khai báo con trỏ Cấp phát bộ nhớ động Con trỏ và mảng Cấp phát bộ nhớ động Một số vấn đề khác về con trỏ Pointer.5
- Pointer Bài toán thực tế ThS. Vấn đề Trần Ngọc Bảo Duy Là một sinh viên trường Đại học Bách Khoa (ĐHQG-HCM), một người khác nhờ bạn hãy giới thiệu về khuôn viên ngôi trường một cách chân thực nhất. Tổ chức bộ nhớ thực thi Con trỏ Tại sao phải có con trỏ? Mô hình con trỏ Khai báo con trỏ Cấp phát bộ nhớ động Con trỏ và mảng Cấp phát bộ nhớ động Một số vấn đề khác về con trỏ Pointer.6
- Pointer Bài toán thực tế ThS. Vấn đề Trần Ngọc Bảo Duy Là một sinh viên trường Đại học Bách Khoa (ĐHQG-HCM), một người khác nhờ bạn hãy giới thiệu về khuôn viên ngôi trường một cách chân thực nhất. Tổ chức bộ nhớ thực Nếu không có các công cụ trực quan, bạn có hai giải pháp: thi 1 Sao chép một phiên bản khác của trường và đưa cho Con trỏ Tại sao phải có con trỏ? người đó xem. Mô hình con trỏ Khai báo con trỏ Cấp phát bộ nhớ động Con trỏ và mảng Cấp phát bộ nhớ động Một số vấn đề khác về con trỏ Pointer.6
- Pointer Bài toán thực tế ThS. Vấn đề Trần Ngọc Bảo Duy Là một sinh viên trường Đại học Bách Khoa (ĐHQG-HCM), một người khác nhờ bạn hãy giới thiệu về khuôn viên ngôi trường một cách chân thực nhất. Tổ chức bộ nhớ thực Nếu không có các công cụ trực quan, bạn có hai giải pháp: thi 1 Sao chép một phiên bản khác của trường và đưa cho Con trỏ Tại sao phải có con trỏ? người đó xem. Mô hình con trỏ Khai báo con trỏ 2 Đưa địa chỉ của trường cho người này, hãy bảo họ tự Cấp phát bộ nhớ động đến đó mà xem. Con trỏ và mảng Cấp phát bộ nhớ động Một số vấn đề khác về con trỏ Hình: Đ/c: P. Đông Hòa, TP. Dĩ An, tỉnh Bình Dương Pointer.6
- Pointer Tại sao phải có con trỏ? ThS. Trần Ngọc Bảo Duy 1 Như vậy, việc ta tạo thêm một biến mà gán cho nó một giá trị của biến đó giống như ta đang sao chép một phiên bản khác mà chỉ dùng để tham khảo giá trị: Tổ chức bộ nhớ thực thi 1 int a = 5; Con trỏ 2 int b = a ; Tại sao phải có con trỏ? Mô hình con trỏ Khai báo con trỏ Cấp phát bộ nhớ động Con trỏ và mảng Cấp phát bộ nhớ động Một số vấn đề khác về con trỏ Pointer.7
- Pointer Tại sao phải có con trỏ? ThS. Trần Ngọc Bảo Duy 1 Như vậy, việc ta tạo thêm một biến mà gán cho nó một giá trị của biến đó giống như ta đang sao chép một phiên bản khác mà chỉ dùng để tham khảo giá trị: Tổ chức bộ nhớ thực thi 1 int a = 5; Con trỏ 2 int b = a ; Tại sao phải có con trỏ? Mô hình con trỏ Khai báo con trỏ 2 Thay vì mỗi lần muốn tham khảo giá trị bằng một Cấp phát bộ nhớ động danh hiệu mới, ta phải khai báo và sao chép giá trị thì Con trỏ và mảng Cấp phát bộ nhớ động C/C++ cho phép ta một kiểu dữ liệu dùng để chứa Một số vấn đề khác địa chỉ của nơi mà ta muốn tham khảo tới. về con trỏ Pointer.7
- Pointer Tại sao phải có con trỏ? ThS. Trần Ngọc Bảo Duy 1 Như vậy, việc ta tạo thêm một biến mà gán cho nó một giá trị của biến đó giống như ta đang sao chép một phiên bản khác mà chỉ dùng để tham khảo giá trị: Tổ chức bộ nhớ thực thi 1 int a = 5; Con trỏ 2 int b = a ; Tại sao phải có con trỏ? Mô hình con trỏ Khai báo con trỏ 2 Thay vì mỗi lần muốn tham khảo giá trị bằng một Cấp phát bộ nhớ động danh hiệu mới, ta phải khai báo và sao chép giá trị thì Con trỏ và mảng Cấp phát bộ nhớ động C/C++ cho phép ta một kiểu dữ liệu dùng để chứa Một số vấn đề khác địa chỉ của nơi mà ta muốn tham khảo tới. về con trỏ 3 Ta chỉ cần chứa địa chỉ chứa không cần sao chép lại đối tượng. Pointer.7
- Pointer Tại sao phải có con trỏ? ThS. Trần Ngọc Bảo Duy 1 Như vậy, việc ta tạo thêm một biến mà gán cho nó một giá trị của biến đó giống như ta đang sao chép một phiên bản khác mà chỉ dùng để tham khảo giá trị: Tổ chức bộ nhớ thực thi 1 int a = 5; Con trỏ 2 int b = a ; Tại sao phải có con trỏ? Mô hình con trỏ Khai báo con trỏ 2 Thay vì mỗi lần muốn tham khảo giá trị bằng một Cấp phát bộ nhớ động danh hiệu mới, ta phải khai báo và sao chép giá trị thì Con trỏ và mảng Cấp phát bộ nhớ động C/C++ cho phép ta một kiểu dữ liệu dùng để chứa Một số vấn đề khác địa chỉ của nơi mà ta muốn tham khảo tới. về con trỏ 3 Ta chỉ cần chứa địa chỉ chứa không cần sao chép lại đối tượng. ⇒ KIỂU DỮ LIỆU ĐÓ LÀ CON TRỎ. Pointer.7
- Pointer Mô hình con trỏ ThS. Trần Ngọc Bảo Duy Biến x: Biến bất kỳ Tổ chức bộ nhớ thực Ô nhớ bắt đầu của x thi có địa chỉ là: 0x1234FFFF Con trỏ Tại sao phải có con trỏ? Mô hình con trỏ Khai báo con trỏ Cấp phát bộ nhớ động Con trỏ và mảng Cấp phát bộ nhớ động Biến p: Con trỏ Một số vấn đề khác 0x1234FFFF Chứa địa chỉ của biến x, về con trỏ nghĩa là giá trị 0x1234FFFF Pointer.8
- Pointer Mô hình con trỏ ThS. Trần Ngọc Bảo Duy Biến x: Biến bất kỳ Ô nhớ bắt đầu của x có địa chỉ là: 0x1234FFFF Tổ chức bộ nhớ thực thi Con trỏ Tại sao phải có con trỏ? Mô hình con trỏ Khai báo con trỏ Cấp phát bộ nhớ động Biến p: Con trỏ Con trỏ và mảng Chứa địa chỉ của biến x, Cấp phát bộ nhớ động Một số vấn đề khác nghĩa là giá trị 0x1234FFFF về con trỏ Minh hoạ con trỏ bởi tên từ ô nhớ biến p CHỈ ĐẾN (point to) ô nhớ biến x. Pointer.8
- Pointer Toán tử & ThS. Toán tử & trả về địa chỉ của một biến. Trần Ngọc Bảo Duy 1 # include < iostream > 2 using namespace std ; 3 struct Point { double x , y , z ; }; 4 int main () Tổ chức bộ nhớ thực 5 { thi 6 int a = 5; Con trỏ 7 cout

CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Kỹ thuật lập trình: Chương 1 - Trần Quang
39 p |
36 |
2
-
Bài giảng Kỹ thuật lập trình: Chuỗi ký tự - Trịnh Tấn Đạt (2024)
63 p |
6 |
2
-
Bài giảng Kỹ thuật lập trình: Các kỹ thuật lập trình nâng cao - Trịnh Tấn Đạt (2024)
86 p |
5 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 2 - Trần Quang
25 p |
41 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 4 - Trần Quang
32 p |
34 |
2
-
Bài giảng Kỹ thuật lập trình: Các phương pháp giải quyết bài toán trên máy tính - Trịnh Tấn Đạt (2024)
22 p |
6 |
1
-
Bài giảng Kỹ thuật lập trình: Giới thiệu môn học - Trịnh Tấn Đạt (2024)
32 p |
6 |
1
-
Bài giảng Kỹ thuật lập trình: Giới thiệu môn học - ThS. Đặng Bình Phương
7 p |
31 |
0
-
Bài giảng Kỹ thuật lập trình: Hàm nâng cao (Phần 2) - ThS. Đặng Bình Phương
30 p |
21 |
0
-
Bài giảng Kỹ thuật lập trình: Hàm nâng cao (Phần 1) - ThS. Đặng Bình Phương
26 p |
25 |
0
-
Bài giảng Kỹ thuật lập trình: Các kỹ thuật thao tác trên bit - ThS. Đặng Bình Phương
29 p |
29 |
0
-
Bài giảng Kỹ thuật lập trình: Tập tin - ThS. Đặng Bình Phương
48 p |
27 |
0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu cấu trúc - ThS. Đặng Bình Phương
33 p |
27 |
0
-
Bài giảng Kỹ thuật lập trình: Chuỗi ký tự - ThS. Đặng Bình Phương
20 p |
30 |
0
-
Bài giảng Kỹ thuật lập trình: Danh sách liên kết - ThS. Đặng Bình Phương
20 p |
27 |
0
-
Bài giảng Kỹ thuật lập trình: Chuyển đổi kiểu dữ liệu và cấp phát bộ nhớ động - ThS. Đặng Bình Phương
28 p |
30 |
0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu con trỏ (Nâng cao) - ThS. Đặng Bình Phương
48 p |
30 |
0
-
Bài giảng Kỹ thuật lập trình: Kỹ thuật lập trình đệ quy - ThS. Đặng Bình Phương
44 p |
29 |
0


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
