Danh mục

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    
10.10.2023

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] ...

Tài liệu được xem nhiều: