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



