Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
407,26 KB
Nội dung
CC ấấ u trúc u trúc StructStruct CC ấấ u trúc u trúc StructStruct Phạm Thế Bảo Trường Đạihọc Khoa họcTự nhiên Tp HCM Trường Đại học Khoa học Tự nhiên Tp . HCM Kiể ấ túKiể ấ tú Kiể u c ấ u t r ú c Kiể u c ấ u t r ú c KháiKhái niệmniệm KhaiKhai báobáo TruyTruy xuấtxuất cáccác thànhthành phầnphần TruyTruy xuấtxuất cáccác thànhthành phầnphần CấuCấutrúctrúc &&mảngmảng ConCon trỏtrỏđếnđếncấucấutrúctrúc Khái iệKhái iệ Khái n iệ m Khái n iệ m CấuCấutrúctrúc làlà kiểukiểudữdữ liệuliệugồmgồmmộtmột nhómnhóm cáccác thànhthành phầnphầncócó kiểukiểu khôngkhông giốnggiống nhaunhau,, mỗimỗi hà hhà h hầhầ đđ áá đị hđị h bằbằ ộộ êê iêiê t hà n h t hà n h phầ n phầ n đ ược đ ượcx á cx á c đị n hđị n h bằ ng bằ ng m ộ tm ộ tt ê nt ê nr iê ngr iê ng biệtbiệt((kiểukiểudữdữ liệuliệutrừutrừutượngtượng –– AbstractAbstract DataData TypeType –– ADT)ADT) TypeType ADT)ADT) KiểuKiểu củacủa mỗimỗi thànhthành phầnphần trongtrong cấucấu trúctrúc làlà mộtmột KiểuKiểu củacủa mỗimỗi thànhthành phầnphần trongtrong cấucấu trúctrúc làlà mộtmột kiếukiếu đãđã đượcđược địnhđịnh nghĩanghĩatrướctrước,, kểkể cảcả mảngmảng vàvà cáccác c ấ uc ấ utrúctrúc kháckhác Cấ túCấ tú Kh i bá CKh i bá C Cấ u t r ú c Cấ u t r ú c –– Kh a i bá o trong CKh a i bá o trong C MộtMột kiểukiểu cấucấu trúctrúc đượcđược địnhđịnh nghĩanghĩa vớivới từtừ khóakhóa structstruct MộtMột kiểukiểu cấucấu trúctrúc đượcđược địnhđịnh nghĩanghĩa vớivới từtừ khóakhóa structstruct typedeftypedef structstruct TênkiểuTênkiểu {{ Kiểuthành p hầnKiểuthành p hần Tênthành p hầnTênthành p hần;; pp pp KiểuthànhphầnKiểuthànhphần TênthànhphầnTênthànhphần;; KiểuthànhphầnKiểuthànhphần TênthànhphầnTênthànhphần ;; KiểuthànhphầnKiểuthànhphần TênthànhphầnTênthànhphần ;; KiểuthànhphầnKiểuthànhphần TênthànhphầnTênthànhphần;; }};; Cấ túCấ tú ídíd Cấ u t r ú c Cấ u t r ú c –– v í d ụv í d ụ t yp edef struct TBook t yp edef struct TDate yp { char title[80]; char author[80]; yp { char day; char month; char author[80]; float price; char isbn[20]; }; char month; int year; }; }; typedef struct TStudent { { char ID[10]; char firstname[10]; char lastname[20]; //khai báo các biến TBook book; TStudent list[100]; char lastname[20]; TDate dob; float marks[10]; }; TStudent list[100]; }; Cấ túCấ tú T ấ áhàhhầT ấ áhàhhầ CáCá thà hthà h hầhầ ủủ ộtột biếbiế kiểkiể ấấ tútú đđ tt ấtất Cấ u t r ú c Cấ u t r ú c –– T ruy xu ấ t c á c t hà n h p hầ n T ruy xu ấ t c á c t hà n h p hầ n Cá c Cá c thà n hthà n h phầ n phầ nc ủ ac ủ am ột m ột biế n biế n kiểukiểu c ấ uc ấ u t r ú c t r ú c đ ược đ ược t ruy t ruy xu ất xu ất thôngthông quaqua têntên biến,biến, dấudấu"" ""vàvà têntên thànhthành phầnphần void Print(TStudent m) { printf( " Name :%s%s \ n " printf( Name : %s %s \ n , m.firstname, m.lastname); printf("Student ID : %s\n", m.ID); printf("Date of birth : %hi/%hi/%i" printf("Date of birth : %hi/%hi/%i" , m.dob.day, m.dob.month, m.dob.year); printf("Marks : "); f (iti0 i10 i ) f or (i n t i = 0 ; i < 10 ; i ++ ) printf("%.2f ", m.marks[i]); } Cấ túCấ tú T ấ áhàhhầT ấ áhàhhầ Cấ u t r ú c Cấ u t r ú c –– T ruy xu ấ t c á c t hà n h p hầ n T ruy xu ấ t c á c t hà n h p hầ n void ReadInfo(TStudent &m) { printf("Type student ID: "); scanf("%s", m.ID); printf("Type first name: "); g ets ( m.firstname ); g( ); printf("Type last name: "); gets(m.lastname); printf( " Date of birth (d m y): " ); printf( Date of birth (d m y): ); scanf("%hi %hi %i", &(m.dob.day), &(m.dob.month), &(m.dob.year)); printf("Marks (10 floats): "); printf("Marks (10 floats): "); for (int i=0; i<10; i++) scanf("%f", &(m.marks[i])); } } Kí h th ớ ủ ột ấ túKí h th ớ ủ ột ấ tú Kí c h th ư ớ c c ủ a m ột c ấ u t r ú c Kí c h th ư ớ c c ủ a m ột c ấ u t r ú c Kí hKí h th ớth ớ kiểkiể dữdữ liệliệ ấấ tútú Kí c hKí c h th ư ớ c th ư ớ c kiể u kiể u dữdữ liệ u liệ uc ấ uc ấ u t r ú c t r ú c:: sizeofsizeof ( << ( << typenametypename >> ) >> ) sizeofsizeof (( typenametypename )) v d v d :: SinhVien_t_sizeSinhVien_t_size = = sizeofsizeof((SinhVienSinhVien);); // 48// 48 Mả áCấ túMả áCấ tú Mả ng c á c Cấ u t r ú c Mả ng c á c Cấ u t r ú c Kh iKh i bb biếbiế ảả áá CấCấ tútú ũũ iốiố hh kh ikh i bábá Kh a i Kh a i b ao b ao biế n biế nm ả ngm ả ng c á cc á c Cấ u Cấ u t r ú c t r ú cc ũ ngc ũ ng g iố ngg iố ng n hư n hư kh a ikh a i bá o bá o biếnbiếnmảngmảng trêntrên cáccác kiểukiểudữdữ liệuliệucơcơ bảnbản kháckhác DùngDùng têntên mảngmảng khikhi truytruy cậpcậptừngtừng phầnphầntửtử trongtrong mảngmảng cáccác cấucấutrúctrúc vàvà toántoán tửtử thànhthành viênviên đểđể truytruy cậpcập cáccác trườngtrường dữdữ liệuliệu củacủa từngtừng thànhthành phầnphần cấucấu trúctrúc liệuliệu củacủa từngtừng thànhthành phầnphần cấucấu trúctrúc . . struct SinhVien { SinhVien mang [100]; { char hoten[31]; int namsinh; char noisinh [4]; SinhVien mang [100]; … char noisinh [4]; char maso[11]; } mang[i].namsinh Ctỏ đế Cấ túCtỏ đế Cấ tú C on t r ỏ đế n Cấ u t r ú c C on t r ỏ đế n Cấ u t r ú c Kh iKh i bábá t ỏt ỏ đếđế ấấ tútú tt tt hh áá kiểkiể dữdữ Kh a i Kh a i bá o bá o con con t r ỏt r ỏ đế n đế nc ấ uc ấ u t r ú c t r ú c t ương t ương tựtự n hư n hư c á cc á c kiể u kiể u dữdữ liệuliệu kháckhác SinhVienSinhVien **SV_ptrSV_ptr ToánToán tửtử truytruy cậpcậptrườngtrường thànhthành phầnphầncủacủacấucấutrúctrúc do con do con trỏtrỏ chỉchỉđếnđến: : >> SV_ptrSV_ptr >>namsinhnamsinh SV tSV t >> iihiih SV _p t r SV _p t r >> no i s i n h no i s i n h [...]...Union U i Khai báo i đư c dù để kh i bá c c biế dù Kh i bá union đ dùng khai báo á biến dùng chung bộ nhớ nhớ union int_or_long { int i; long l; } a_number; a_number; C c thành phần c a union c thể không c kích thư c bằng nhau nhau Kích thư c bộ nhớ trong khai báo union là kích thư c của kiểu dữ liệu lớn nhất c trong khai báo union Ví d dụ 1 1 2 3 4 5 6 6 7 8 9 10 11 12 13 union int_or_long... Enum: Liệt kê toàn bộ giá trị mà biến c thể nhận Khai báo: báo: enum { tên_kiểu_enum>{ trị> ị }; Ví dụ: dụ: ụ enum day{Hai, Ba, Tu, Nam, Sau, Bay, CN}; Ba, Tu, Sau, CN}; day ngay; ngay; gay; gay ngay = Tu; // 2 Tu; enum modes{LASTMODE = -1, BW40 = 0} BW40 Tập tin - File Phạm Thế Bảo Trường Đại h c Khoa h c Tự nhiên Tp.HCM Tp HCM . nghĩanghĩatrướctrư c, , kểkể c c mảngmảng vàvà c cc c c ấ uc ấ utrúctr c kháckh c C t C tú Kh i bá CKh i bá C Cấ u t r ú c C u t r ú c –– Kh a i bá o trong CKh a i bá o trong C MộtMột kiểukiểu c ucấu trúctr c đư c ư c địnhđịnh nghĩanghĩa vớivới từtừ khóakhóa structstruct MộtMột kiểukiểu c ucấu trúctr c đư c ư c địnhđịnh nghĩanghĩa vớivới từtừ khóakhóa structstruct . tú Kiể u c ấ u t r ú c Kiể u c ấ u t r ú c KháiKhái niệmniệm KhaiKhai báobáo TruyTruy xuấtxuất c cc c thànhthành phầnphần TruyTruy xuấtxuất c cc c thànhthành phầnphần C uCấutrúctr c. khikhi truytruy c pcậptừngtừng phầnphầntửtử trongtrong mảngmảng c cc c cấucấutrúctr c vàvà toántoán tửtử thànhthành viênviên đểđể truytruy c pcập c cc c trườngtrường dữdữ liệuliệu c acủa từngtừng thànhthành phầnphần c ucấu trúctr c liệuliệu c acủa từngtừng thànhthành phầnphần c ucấu trúctr c .