Giào trình Lập trình C - Chương 7: Struct
Khái niệm về Struct
Khai báo struct
Truy nhập các trường trong struct
Phép gán giữa biến kiểu struct
Con trỏ và struct
8/6/2010 1 7. Struct Nội dung Khái niệm về Struct Khai báo struct Truy nhập các trường trong struct Phép gán giữa biến kiểu struct Con trỏ và struct 3. Cấu trúc Kiểu dữ liệu cấu trúc (struct) là kiểu dữ liệu phức hợp bao gồm nhiều thành phần, mỗi thành phần có thể thuộc những kiểu dữ liệu khác nhau. Ví dụ: khi cần lưu giữ thông tin về một dạng đối tượng nào đó như đối tượng sinh viên chẳng hạn, ta lưu giữ các thông tin liên quan đến sinh viên như họ tên, tuổi, kết quả học tập 3.struct Khai báo kiểu dữ liệu cấu trúc: Để khai báo một kiểu dữ liệu cấu trúc ta dùng cú pháp khai báo sau: struct tên_cấu_trúc { ; }; 8/6/2010 2 3.struct struct sinh_vien { char masoSV[10]; char hoten[30]; float diem_TinDC; }; struct point_3D { float x; float y; float z; }; 3.struct Khai báo biến cấu trúc: Để khai báo biến cấu trúc ta dùng cú pháp khai báo sau tên_cấu_trúc tên_biến_cấu_trúc; Ví dụ: sinh_vien a, b, c; Câu lệnh trên khai báo 3 biến lần lượt tên là a, b, c có kiểu dữ liệu là cấu trúc sinh_vien. Xử lí dữ liệu cấu trúc Truy nhập các trường dữ liệu của cấu trúc : Dữ liệu của một biến cấu trúc bao gồm nhiều trường dữ liệu, và các trường này độc lập với nhau. Muốn thay đổi nội dung dữ liệu bên trong một biến cấu trúc ta cần truy nhập tới từng trường và thực hiện thao tác cần thiết trên từng trường đó. tên_biến_cấu_trúc.tên_trường Giờ đây ta có thể “đối xử” tên_biến_cấu_trúc.tên_trường giống như một biến thông thường, 3.Struct struct sinhvien { char masoSV[10]; char hoten[30]; float diem; }; int main() { sinhvien a; strcpy(a.masoSV,ʺBK2456ʺ); strcpy(a.hoten,ʺNguyen Van Aʺ); a.diem=7.6; printf(ʺTen : %s MasoSV: % s Diem: %0.2f \nʺ,a.hoten, a. masoSV, a.diem); return 0; } 8/6/2010 3 3.Struct Phép gán giữa các biến cấu trúc Phép gán cấu trúc có cú pháp tương tự như phép gán thông thường biến_cấu_trúc_1 = biến_cấu_trúc_2; Câu lệnh trên sẽ gán giá trị của các trường trong biến_cấu_trúc_2 cho các trường tương ứng trong biến_cấu_trúc_1. 3.Struct Con trỏ cấu trúc Để khai báo một biến con trỏ cấu trúc ta dùng cú pháp khai báo * ; Có 2 cách truy nhập vào trường dữ liệu của cấu trúc từ biến con trỏ cấu trúc là (*). ‐> 3.struct sinhvien a,b,*c; strcpy(a.masoSV,ʺBK2456ʺ); strcpy(a.hoten,ʺNguyen Van Aʺ); a.diem=7.6; printf(ʺTen : %s MasoSV: % s Diem: %0.2f \nʺ,a.hoten, a.masoSV, a.diem); b=a; printf(ʺTen : %s MasoSV: % s Diem: %0.2f \nʺ,b.hoten, b.masoSV, b.diem); c=(sinhvien*)malloc(sizeof(sinhvien)); *c = b; printf(ʺTen : %s MasoSV: % s Diem: %0.2f \nʺ,c‐>hoten, c‐>masoSV, c‐>diem); 3.struct Mảng cấu trúc : mỗi phần tử của mảng là một cấu trúc. int main() { sinhvien a[5]; int i; for(i=0; i<5; i++) { printf(ʺNhap sinh vien thu %d \nʺ,i+1); printf(ʺMa SV: ʺ); scanf(ʺ%sʺ,a[i].masoSV); fflush(stdin); printf(ʺHo ten: ʺ); gets(a[i].hoten); printf(ʺDiem: ʺ); scanf(ʺ%fʺ,&a[i].diem); } for(i=0; i<5; i++) printf(ʺTen: %s MaSV: %s diem: %0.2f\nʺ,a[i].hoten,a[i].masoSV,a[i].diem); return 0; } 8/6/2010 4 Bài tập Bài 1 : Định nghĩa cấu trúc sinh viên (mã sinh viên, họ tên, lớp, điểm trung bình), nhập và in ra danh sách lớp theo cấu trúc sinh viên đó. Tìm và in ra màn hình thông tin về sinh viên có tên là xâu ký tự người dùng nhập vào từ bàn phím. Tìm và in ra màn hình những sinh viên có điểm trung bình lớn hơn 5.
File đính kèm:
- chapter7.Struct.pdf
- Examples.Chapter7.pdf