- Khái niệm: struct là kiểu dữ liệu mà trong đó mỗi phần tử của nó có nhiều trường với các kiểu dữ liệu có thể khác nhau.
1. Khai báo struct
* Cách 1: Khai báo trực tiếp.
struct [Tên_struct]
{ kiểu_dữ_liệu tên_trường1; kiểu_dữ_liệu tên_trường2; ...
kiểu_dữ_liệu tên_trườngn;
} bien1, bien2, …. bien n ; /*danh_sach_bien_nhan_struct*/
Chú ý: Danh sách biến nhận dữ liệu kiểu struct là tên các biến được viết cách nhau bởi dấu “,” Ví dụ: struct DiaChi { int SoNha; char Pho[20]; char ThanhPho[20]; } OngA, BaB;
* Cách 2: Khai báo gián tiếp.
struct <Tên_struct> { kiểu_dữ_liệu tên_trường1; kiểu_dữ_liệu tên_trường2; ... kiểu_dữ_liệu tên_trườngn; }
struct <tên_struct> bien1, bien2, …. bien n ; /*danh_sach_bien_nhan_struct*/
Ví dụ: struct DiaChi { int SoNha; char Pho[20]; char ThanhPho[20]; }
struct DiaChi OngA, BaB;
* Cách 3: Khai báo struct lồng nhau
Ví dụ:
struct Date
unsigned char thang; unsigned int nam; }
struct NhanSu
{char HoTen[30] ;
struct Date NgaySinh ; unsigned int GioiTinh;
struct DiaChi NoiO ; float Luong;
} NguoiA, NguoiB;
2. Truy cập vào phần tử của struct
Muốn truy cập đến 1 trường của một biến bất kỳ có kiểu dữ liệu struct, ta viết: Tên_biến.Tên_trường
Ví dụ:
OngA.SoNha = 10;
OngA. Pho = “Ha Dong”; OngA.ThanhPho = “Ha Noi”
3. Phối hợp mảng và dữ liệu kiểu struct
- Mảng_struct là mảng mà mỗi phần tử của nó có kiểu dữ liệu struct.
Ví dụ:
struct DiaChi NoiO[100];
- Muốn truy cập vào 1 trường của biến thứ i trong mảng ta viết: Tên_biến_mảng[chỉ_số].Tên_Trường;
Ví dụ:
for (i=0; i<5; i++) {
printf("Nhap dia chi noi o cho nguoi thu %d",i+1) ; printf("\nSo nha: ") ; scanf("%d",&NoiO[i].SoNha) ; printf(" - Pho: ") ; scanf("%s",&NoiO[i].Pho) ;
printf(" - Thanh pho: ") ; scanf("%s",&NoiO[i].ThanhPho) ; } ví dụ 27 : #include <stdio.h> #include <conio.h> main() { clrscr(); int i; struct DiaChi
{int SoNha; char Pho[20]; char ThanhPho[20]; };
struct DiaChi NoiO[10]; for (i=0; i<3; i++) {
printf("\n\nNhap dia chi noi o cho nguoi thu %d :",i+1); printf("\n So nha: "); scanf("%d",&NoiO[i].SoNha); printf("\n Pho: "); scanf("%s",&NoiO[i].Pho);
printf("\n Thanh pho: "); scanf("%s",&NoiO[i].ThanhPho); }
clrscr();
for (i=0; i<3; i++) {
printf("\n\nDia chi noi o cho nguoi thu %d :",i+1); printf("\n So nha: %d",NoiO[i].SoNha);
printf("\n Pho: %s",NoiO[i].Pho);
printf("\n Thanh pho: %s",NoiO[i].ThanhPho); }
getch(); }