TIN HỌC CƠ SỞ 2: DỮ LIỆU KIỂU CON TRỎ NÂNG CAO
Số trang: 44
Loại file: ppt
Dung lượng: 3.22 MB
Lượt xem: 15
Lượt tải: 0
Xem trước 5 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Tham khảo tài liệu tin học cơ sở 2: dữ liệu kiểu con trỏ nâng cao, công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
TIN HỌC CƠ SỞ 2: DỮ LIỆU KIỂU CON TRỎ NÂNG CAOTrườngĐạihọcKhoahọcTựnhiênKhoaCôngnghệthôngtinBộmônTinhọccơsở TINHỌCCƠSỞ2 ĐặngBìnhPhương dbphuong@fit.hcmuns.edu.vn DỮLIỆUKIỂUCONTRỎ NÂNGCAO 1 &VC BB Nộidung 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 Tinhọccơsở2ĐặngBìnhPhương 2 &VC BB Contrỏcấp2(contrỏđếncontrỏ) Đặtvấ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àmsaothayđổigiátrịcủacontrỏ(không phảigiátrịmànótrỏđến)saukhigọi 3 Tinhọccơsở2ĐặngBìnhPhương &VC BB Contrỏcấp2 int*p intn 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 … 22 00 00 00 02 00 00 00 N U L L … CapPhat int*p intn NULL 2 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 … N U L L … int*a=NULL Tinhọccơsở2ĐặngBìnhPhương 4 &VC BB Contrỏcấp2 Giảipháp Sửdụngthamchiếuint*&p(trongC++) void CapPhat(int *&p, int n) { p = (int *)malloc(n * sizeof(int)); } Khôngthayđổitrựctiếpthamsốmàtrảvề int* CapPhat(int n) { int *p = (int *)malloc(n * sizeof(int)); return p; } Tinhọccơsở2ĐặngBìnhPhương 5 &VC BB Contrỏcấp2 Giảipháp Sửdụngcontrỏptrỏđếncontrỏanày.Hàm sẽthayđổigiátrịcủacontrỏâgiántiếpthông quacontrỏp. void CapPhat(int **p, int n) { *p = (int *)malloc(n * sizeof(int)); } void main() { int *a = NULL; CapPhat(&a, 4); } 6 Tinhọccơsở2ĐặngBìnhPhương &VC BB Contrỏcấp2 int**p intn 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 intn 0B 2 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 … 22 00 00 00 N U L L … int*a=NULL Tinhọccơsở2ĐặngBìnhPhương 7 &VC BB Contrỏcấp2 Lưuý int x = 12; int *ptr = &x; // OK int k = &x; ptr = k; // Lỗi int **ptr_to_ptr = &ptr; // OK int **ptr_to_ptr = &x; // Lỗi **ptr_to_ptr = 12; // OK *ptr_to_ptr = 12; // Lỗi printf(“%d”, ptr_to_ptr); // Địa chỉ ptr printf(“%d”, *ptr_to_ptr); // Giá trị ptr printf(“%d”, **ptr_to_ptr); // Giá trị x Tinhọccơsở2ĐặngBìnhPhương 8 &VC BB Contrỏvàmảng2chiều int a[3][4]; 0 1 2 3 4 5 6 7 8 9 10 11 a 0 1 2 int 0 1 2 3 1 2 a 0 1 2 int[4] Tinhọccơsở2ĐặngBìnhPhương 9 &VC BB Contrỏvàmảng2chiều Hướngtiếpcận1 Cácphầntửtạothànhmảng1chiều Sửdụngcontrỏint*đểduyệtmảng1chiều int*p=(int*)a +1 0 1 2 3 4 5 6 7 8 9 10 11int a[3][4] ...
Nội dung trích xuất từ tài liệu:
TIN HỌC CƠ SỞ 2: DỮ LIỆU KIỂU CON TRỎ NÂNG CAOTrườngĐạihọcKhoahọcTựnhiênKhoaCôngnghệthôngtinBộmônTinhọccơsở TINHỌCCƠSỞ2 ĐặngBìnhPhương dbphuong@fit.hcmuns.edu.vn DỮLIỆUKIỂUCONTRỎ NÂNGCAO 1 &VC BB Nộidung 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 Tinhọccơsở2ĐặngBìnhPhương 2 &VC BB Contrỏcấp2(contrỏđếncontrỏ) Đặtvấ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àmsaothayđổigiátrịcủacontrỏ(không phảigiátrịmànótrỏđến)saukhigọi 3 Tinhọccơsở2ĐặngBìnhPhương &VC BB Contrỏcấp2 int*p intn 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 … 22 00 00 00 02 00 00 00 N U L L … CapPhat int*p intn NULL 2 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 … N U L L … int*a=NULL Tinhọccơsở2ĐặngBìnhPhương 4 &VC BB Contrỏcấp2 Giảipháp Sửdụngthamchiếuint*&p(trongC++) void CapPhat(int *&p, int n) { p = (int *)malloc(n * sizeof(int)); } Khôngthayđổitrựctiếpthamsốmàtrảvề int* CapPhat(int n) { int *p = (int *)malloc(n * sizeof(int)); return p; } Tinhọccơsở2ĐặngBìnhPhương 5 &VC BB Contrỏcấp2 Giảipháp Sửdụngcontrỏptrỏđếncontrỏanày.Hàm sẽthayđổigiátrịcủacontrỏâgiántiếpthông quacontrỏp. void CapPhat(int **p, int n) { *p = (int *)malloc(n * sizeof(int)); } void main() { int *a = NULL; CapPhat(&a, 4); } 6 Tinhọccơsở2ĐặngBìnhPhương &VC BB Contrỏcấp2 int**p intn 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 intn 0B 2 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 … 22 00 00 00 N U L L … int*a=NULL Tinhọccơsở2ĐặngBìnhPhương 7 &VC BB Contrỏcấp2 Lưuý int x = 12; int *ptr = &x; // OK int k = &x; ptr = k; // Lỗi int **ptr_to_ptr = &ptr; // OK int **ptr_to_ptr = &x; // Lỗi **ptr_to_ptr = 12; // OK *ptr_to_ptr = 12; // Lỗi printf(“%d”, ptr_to_ptr); // Địa chỉ ptr printf(“%d”, *ptr_to_ptr); // Giá trị ptr printf(“%d”, **ptr_to_ptr); // Giá trị x Tinhọccơsở2ĐặngBìnhPhương 8 &VC BB Contrỏvàmảng2chiều int a[3][4]; 0 1 2 3 4 5 6 7 8 9 10 11 a 0 1 2 int 0 1 2 3 1 2 a 0 1 2 int[4] Tinhọccơsở2ĐặngBìnhPhương 9 &VC BB Contrỏvàmảng2chiều Hướngtiếpcận1 Cácphầntửtạothànhmảng1chiều Sửdụngcontrỏint*đểduyệtmảng1chiều int*p=(int*)a +1 0 1 2 3 4 5 6 7 8 9 10 11int a[3][4] ...
Tìm kiếm theo từ khóa liên quan:
công nghệ thông tin kỹ thuật lập trình tài liệu tin học thủ thuật máy tính tin học cơ sở 2 dữ liệu kiểu con trỏ nâng caoGợi ý tài liệu liên quan:
-
52 trang 410 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 291 0 0 -
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 286 0 0 -
74 trang 275 0 0
-
96 trang 275 0 0
-
Làm việc với Read Only Domain Controllers
20 trang 273 0 0 -
Tài liệu dạy học môn Tin học trong chương trình đào tạo trình độ cao đẳng
348 trang 265 1 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 261 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 251 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 245 0 0