Giáo trình nhập môn lập trình - Dữ liệu kiểu con trỏ (nâng cao)
Thông tin tài liệu:
Nội dung trích xuất từ tài liệu:
Giáo trình nhập môn lập trình - Dữ liệu kiểu con trỏ (nâng cao) Trường Đại học Khoa học Tự nhiên Khoa Công nghệ thông tin Bộ môn Tin học cơ sở NHẬP MÔN LẬP TRÌNH Đặng Bình Phương dbphuong@fit.hcmus.edu.vn DỮ LIỆU KIỂU CON TRỎ (NÂNG CAO) 1 & Nội dung & VC VC BB BB 1 Con trỏ cấp 2 2 Con trỏ và mảng nhiều chiều 3 Mảng con trỏ 4 Con trỏ hàm 2 Dữ liệu kiểu con trỏ (nâng cao) & Con trỏ cấp 2 (con trỏ đến con trỏ) & VC VC BB BB Đặt vấn đề void CapPhat(int *p, int n) { p = (int *)malloc(n * sizeof(int)); } void main() { int *a = NULL; CapPhat(a, 2); // a vẫn = NULL } Làm sao thay đổi giá trị của con trỏ (không phải giá trị mà nó trỏ đến) sau khi gọi hàm? 3 Dữ liệu kiểu con trỏ (nâng cao) & Con trỏ cấp 2 & VC VC BB BB int *p int n 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 … NULL … 22 00 00 00 02 00 00 00 CapPhat int *p int n NULL 2 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 … … NULL int *a = NULL 4 Dữ liệu kiểu con trỏ (nâng cao) & Con trỏ cấp 2 & VC VC BB BB Giải pháp Sử dụng tham chiếu int *&p (trong C++) void CapPhat(int *&p, int n) { p = (int *)malloc(n * sizeof(int)); } Không thay đổi trực tiếp tham số mà trả về int* CapPhat(int n) { int *p = (int *)malloc(n * sizeof(int)); return p; } 5 Dữ liệu kiểu con trỏ (nâng cao) & Con trỏ cấp 2 & VC VC BB BB Giải pháp Sử dụng con trỏ p trỏ đến con trỏ a này. Hàm sẽ thay đổi giá trị của con trỏ â gián tiếp thông qua con trỏ p. void CapPhat(int **p, int n) { *p = (int *)malloc(n * sizeof(int)); } void main() { int *a = NULL; CapPhat(&a, 4); } 6 Dữ liệu kiểu con trỏ (nâng cao) & Con trỏ cấp 2 & VC VC BB BB int **p int n 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 … … 0B 00 00 00 02 00 00 00 CapPhat int **p int n 0B 2 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 … NULL … 22 00 00 00 int *a = NULL 7 Dữ liệu kiểu con trỏ (nâng cao) & Con trỏ cấp 2 & VC VC BB BB Lưu ý int x = 12; int *ptr = &x; // OK // Lỗi int k = &x; ptr = k; int **ptr_to_ptr = &ptr; // OK // Lỗi int **ptr_to_ptr = &x; **ptr_to_ptr = 12; // OK // Lỗi *ptr_to_ptr = 12; // Địa chỉ ptr printf(“%d”, ptr_to_ptr); // Giá trị ptr printf(“%d”, *ptr_to_ptr); // Giá trị x printf(“%d”, **ptr_to_ptr); 8 Dữ liệu kiểu con trỏ (nâng cao) & Con trỏ và mảng 2 chiều & VC VC BB BB int a[3][4]; 0 1 2 3 4 5 6 7 8 9 10 11 0 a 1 int 2 0 1 2 3 1 2 0 a 1 2 int[4] 9 Dữ liệu kiểu con trỏ (nâng cao) & Con trỏ và mảng 2 chiều & VC VC BB BB Hướng tiếp cận 1 Các phần tử tạo thành mảng 1 chiều Sử dụng con trỏ int * để duyệt mảng 1 chiều int *p = (int *)a +1 0 1 2 3 4 5 6 7 8 9 10 11 int a[3][4] 10 Dữ liệu kiểu con t ...
Tìm kiếm theo từ khóa liên quan:
ngôn ngữ lập trình mẹo lập trình tài liệu lập trình thủ thuật lập trình lập trình cơ bảnGợi ý tài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 276 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 267 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 266 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 232 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 226 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 218 1 0 -
Thủ thuật giúp giải phóng dung lượng ổ cứng
4 trang 217 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 208 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 186 0 0 -
Giáo trình Lập trình C căn bản: Phần 1
64 trang 170 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 168 0 0 -
Thiết kế mạch logic bằng Verilog - HDL
45 trang 164 0 0 -
Giới thiệu : Lập trình mã nguồn mở
14 trang 163 0 0 -
Hướng dẫn lập trình với Android part 4
5 trang 156 0 0 -
Báo cáo thực tập: Quản lý nhân sự & tiền lương
52 trang 154 0 0 -
Giáo trình nhập môn lập trình - Phần 22
48 trang 139 0 0 -
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 134 0 0 -
LUẬN VĂN: ỨNG DỤNG NGÔN NGỮ LẬP TRÌNH RÀNG BUỘC COMET VÀO BÀI TOÁN LẬP THỜI KHÓA BIỂU
43 trang 132 0 0 -
142 trang 130 0 0
-
Bài giảng lập trình c căn bản - Trường Apptech - Chương 4
27 trang 118 0 0