Tham khảo tài liệu ''kỹ thuật lập trình c chuyên nghiệp phần 7'', 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ả
Cấu trúc - Struct Phạm Thế Bảo Trường Đại học Khoa học Tự nhiên Tp.HCM Tp HCM Kiể cấu Kiểu ấ trúc t ú Khái niệm Khai báo Truy xuất thành phần Cấu trúc & mảng Con trỏ đến cấu trúc Khái niệm iệ Cấu trúc kiểu liệu gồm nhóm thành phần có kiểu khơng giống nhau, nhau, thành hà h phần hầ đ xác định đị h bằ ộ tên ê riêng iê biệt (kiểu liệu trừu tượng – Abstract Data Type – ADT) ADT) Kiểu thành phần cấu trúc kiếu định nghĩa trước, trước, kể mảng cấu trúc khác khác Cấ trúc Cấu t ú – Khai Kh i báo bá C Một kiểu cấu trúc định nghĩa với từ khóa struct struct typedef struct Tênkiểu { Kiểuthànhphần p Tênthànhphần Tênthànhphần; p ; Kiểuthànhphần Tênthànhphần; Tênthànhphần ; Kiểuthànhphần Tênthànhphần; Tênthànhphần ; Kiểuthànhphần Tênthànhphần; Tênthànhphần ; }; Cấ trúc Cấu t ú – víí dụ d typedef yp struct TDate { char day; char month; int year; }; typedef struct TStudent { char ID[10]; char firstname[10]; char lastname[20]; TDate dob; float marks[10]; }; typedef yp struct TBook { char title[80]; char author[80]; float price; char isbn[20]; }; //khai báo biến TBook book; TStudent list[100]; Cấ trúc Cấu t ú – Truy T xuất ấ thành hà h phần hầ Cá thành Các h phần hầ ủ ột biến biế kiểu kiể cấu ấ trúc t ú đ t truy xuất ất thông qua tên biến, dấu "." tên thành phần phần void Print(TStudent m) { printf("Name printf( Name : %s %s\n" %s\n , m.firstname, m.lastname); printf("Student ID : %s\n", m.ID); printf("Date of birth : %hi/%hi/%i" %hi/%hi/%i", m.dob.day, m.dob.month, m.dob.year); printf("Marks : "); f for (i (int t i i=0; i i SV_ptr->namsinh SV_ptrSV t ->noisinh SV_ptrSV_ptr ii h U i Union Kh i báo Khai bá union i đ dù để khai dùng kh i báo bá biến biế dùng dù chung nhớ nhớ union int_or_long { int i; long l; } a_number; a_number; Các thành phần union khơng có kích thước nhau Kích thước nhớ khai báo union kích thước kiểu liệu lớn có khai báo union Ví d dụ 1 6 10 11 12 13 union int_or_long int or long { int i; long l; } a_number; a_number; a_number i = 5; a_number aa_number a_number number.l = 100 100L L; // anonymous union union { int i; float f; }; i = 10 10;; f = 2.2; Kiể Enum Kiểu E (liệt kê kê)) Kiểu Enum Enum:: Liệt kê toàn giá trị mà biến nhận Khai báo: báo: enum { >{ ị> }; Ví dụ dụ: ụ: enum day{Hai, Ba, Ba, Tu Tu,, Nam, Sau Sau,, Bay, CN} CN};; day ngay; gay;; gay = Tu Tu;; // enum modes{LASTMODE = -1, BW BW40 40 = 0} Tập tin - File Phạm Thế Bảo Trường Đại học Khoa học Tự nhiên Tp.HCM Tp HCM ... h phần hầ đ x? ?c định đị h bằ ộ tên ê riêng iê biệt (kiểu liệu trừu tượng – Abstract Data Type – ADT) ADT) Kiểu thành phần c? ??u tr? ?c kiếu định nghĩa trư? ?c, trư? ?c, kể mảng c? ??u tr? ?c kh? ?c kh? ?c C? ??... C? ?? tr? ?c Cấu t ú – Khai Kh i báo bá C Một kiểu c? ??u tr? ?c định nghĩa với từ khóa struct struct typedef struct Tênkiểu { Kiểuthànhphần p Tênthànhphần Tênthànhphần; p ; Kiểuthànhphần Tênthànhphần;... Tênthànhphần; Tênthànhphần ; Kiểuthànhphần Tênthànhphần; Tênthànhphần ; Kiểuthànhphần Tênthànhphần; Tênthànhphần ; }; C? ?? tr? ?c Cấu t ú – víí dụ d typedef yp struct TDate { char day; char month; int