Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
25
Dung lượng
527,84 KB
Nội dung
CHƯƠNG 8CHƯƠNG 8 STRUCTURES STRUCTURES ENUM ENUM STRUCTURES STRUCTURES –– ENUM ENUM typedeftypedef typedeftypedef 1.1. GiớiGiới thiệuthiệu 1. 1. GiớiGiới thiệuthiệu Có 5 cách đ ể t ạ okiểudữ li ệ utù y biến ạ ệ y ( custom data types ). 1. S tructure 1. S tructure 2.bit-field 3 Union 3 . Union 4.Enumeration 5.typedef 2.2. StructStruct (( cấucấu trúctrúc )) 2. 2. StructStruct (( cấucấu trúctrúc )) y M ộ tcấutrúclàm ộ tt ập các biến đư ợ c ộ ộ ập ợ tham chiếuthôngquamột tên chung. Nhữn g biếnt ạ onêncấutrúcđư ợ c gọ ilà g ạ ợ gọ các thành viên ( members ). y Sự khác biệt giữa kiểu cấu trúc và kiểu Sự khác biệt giữa kiểu cấu trúc và kiểu mảng là: các phầntử củamảng là cùng kiểu còn các phần tử của kiểu cấu trúc kiểu còn các phần tử của kiểu cấu trúc có thể có kiểu khác nhau. 2.1.2.1. KhaiKhai báobáo StructStruct 2.1. 2.1. KhaiKhai báobáo StructStruct Struct tructureName y structureNam e : T ên Struct tructureName { type member1; củacấutrúc y type : Kiểudữ liệucủa thà h iê t ứ type member1; type member2; thà n h viê n t ươn g ứ n g y Member1, , memberN : Tên các bi ế n type memberN; memberN : Tên các bi ế n thành viên củacấutrúc y va rN a m es : Tê n các b i ế n . } varNames ; aaes ê các b ế cấu trúc phân cách nhau bằng dấuphẩy. } varNames ; VíVí dụdụ :: VíVí dụdụ :: y Tạomộtstructsinhviêngồmcácthôngtin: mã số sinh viên, họ tên, năm sinh, địachỉ. struct sinhvien { char *MaSv; char *TenSv; int Namsinh; char *Diachi; }; y Khai báo biếnkiểu sinhvien: sinhvien sv1, sv2; 2.2.Truy 2.2.Truy cc ậậ pp bibi ếế nn cc ấấ uu trúctrúc 2.2.Truy 2.2.Truy cc ậậ pp bibi ếế nn cc ấấ uu trúctrúc y Dùn g toán tử dấuchấm ( dot o p erator ) g ( p) để truy cập các thành viên củamộtbiến cấutrúc. y Cú pháp: varNames memberName varNames . memberName Ví dụ: 1 MS “ 001 ” sv 1 . M a S v= “ a 001 ” ; sv1.TenSv=“Nguyen van A”; sv2.Namsinh=1977; 2.3.2.3. LệnhLệnh gángán cấucấu trúctrúc 2.3. 2.3. LệnhLệnh gángán cấucấu trúctrúc y Dùng lệnh gán để gán nội dung trong 1 biến cấutrúcchomộtbiếncấutrúckháccócùn g kiểu í d y V í d ụ: struct coordXY { int x; int y; } diemA, diemB; y diemA.x = 100; diemA.y = 200; 2.3.2.3. LệnhLệnh gángán cấucấu trúctrúc 2.3. 2.3. LệnhLệnh gángán cấucấu trúctrúc y Gán n ộ idun g biếncấutrúcdiemAcho ộ g biếndiemB: diemB = diemA ; diemB diemA ; y Hoặccóthể sao chép từng thành viên: pointB x pointA x ; pointB . x = pointA . x ; pointB.y = pointA.y; 2.4.2.4. MảngMảng cáccác cấucấu trúctrúc 2.4. 2.4. MảngMảng cáccác cấucấu trúctrúc y Mảng cấutrúclàmộtmảng mà mỗiphầntử là ể mộtbiếnki ể ucấutrúc. y Để khai báo mộtmảng các cấutrúc,trướchết hả kh bá ấ ú đó kh bá ộ p hả i kh ai bá oc ấ utr ú c, sau đó kh ai bá om ột mảng củacấutrúcđó. Ví d tt d { Ví d ụ:s t ruc t d s { char hoten[25]; fl t tlh fl oa t t oan, l y, h oa; }; d bd []// ả hầ ử k ể d d s b an gd iem [ 50 ] ; // m ả n g 50 p hầ nt ử k i ể u d s 2.4.2.4. MảngMảng cáccác cấucấu trúctrúc 2.4. 2.4. MảngMảng cáccác cấucấu trúctrúc y Để truy cập đếntừng thành viên củatừng phầnt ử củamản g ,tadùn g chỉ mụccủaphần tử và toán tử thành viên (.). í d V í d ụ: for(int i=0; i<n; i++) { cout <<"Ho va ten: "; gets(bangdiem[i].hoten) cou t <<"Diem toan: "; cin >> ban g diem[i].toan; cout <<"Diem ly: "; cin >> bangdiem[i].ly; cou t <<"Diem hoa "; cin >> ban g diem[i].hoa; } [...]... a.y=a.y-m; } void main() { diem a,b; doitoado(a, 10, 10); cout . CHƯƠNG 8CHƯƠNG 8 STRUCTURES STRUCTURES ENUM ENUM STRUCTURES STRUCTURES –– ENUM ENUM typedeftypedef typedeftypedef 1.1. GiớiGiới thiệuthiệu 1. . Dùn g toán tử dấuchấm ( dot o p erator ) g ( p) để truy cập các thành viên củamộtbiến cấutrúc. y Cú pháp: varNames memberName varNames . memberName Ví dụ: 1 MS “ 001 ” sv 1 . M a S v= “ a 001 ” ; sv1.TenSv=“Nguyen. trỏtrỏ đếnđến cấucấu trúctrúc y Mộtbiếncontrỏ có thể trỏđếnmộtbiếnkiểu ấ tú c ấ u t r ú c. y Cú pháp khai báo mộtcontrỏ cấutrúc structureName * structurePointers ; structureName * structurePointers ; Ví