Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 13: Các kiểu dữ liệu có cấu trúc và kiểu dữ liệu tự định nghĩa
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU DÖÕ
LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 Kieåu STRUCT
13.2 Kieåu UNION
13.3 Kieåu ENUM (Enumerated)
13.4 Ñònh nghóa kieåu baèng TYPEDEF
Baøi taäp cuoái chöông
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.1 Khaùi nieäm - Khai baùo struct
Struct (taïm diïch lacau truc) lamot kieåu döõ lieäu phöùc hôïp
ñöôïc taïo töø caùc kieåu döõ lieäu khaùc, caùc kieåu döõ lieäu naøy ñöôïc
söû duïng khai baùo cho caùc bieán thaønh phaàn cuûa bieán kieåu
struct.
struct teân_caáu_truùc
{
Khai baùo caùc bieán thaønh phaàn
};
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.1 Khaùi nieäm - Khai baùo struct
struct sinh_vieân
{
char ma_so[10];
char ho_ten[40];
int tuoi;
char dia_chi[80];
};
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.1 Khaùi nieäm - Khai baùo struct
Cuù phaùp cuûa moät khai baùo bieán caáu truùc gioáng nhö khai
baùo bieán bình thöôøng:
struct teân_struct teân_bieán;
Ví duï:
struct sinh_vien sv1, sv2;
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.1 Khaùi nieäm - Khai baùo struct
Ví duï:
struct sinh_vieân
{
char ma_so[10];
char ho_ten[40];
ino;
char dia_chi[80];
}
sv1, sv2;
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.1 Khaùi nieäm - Khai baùo struct
10 byte 40 byte 2 byte 80 byte
ma_so ho_ten
tuoi
dia_chi
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.1 Khaùi nieäm - Khai baùo struct
Ví duï:
struct sinh_vien sv1 = { "4950897", "Tran van Vinh", 21,
"42 Truong Cong Dinh p.13 q.TB"};
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.1 Khaùi nieäm - Khai baùo struct
Ñeå truy xuaát moät thaønh phaàn cuûa bieán caáu truùc, C coù toaùn
töû chaám “.” ñeå laáy töøng thaønh phaàn.
Ví duï:
strcpy (sv1.ma_so, 4950897");
strcpy (sv1.ho_ten, Tran van Dinh");
sv1.tuoi = 21;
strcpy (sv1.dia_chi, "42 Truong Cong Dinh p.13 q.TB");
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.1 Khaùi nieäm - Khai baùo struct
C cho pheùp gaùn caùc caáu truùc cuøng kieåu cho nhau qua teân
bieán caáu truùc thay vì phaûi gaùn töøng thaønh phaàn cho nhau.
Ví duï:
sv2 = sv1;
Ví duï 14.8 (GT)
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.1 Khaùi nieäm - Khai baùo struct
Caùc thaønh phaàn cuûa bieán struct cuõng laø bieán bình thöôøng,
neân ta coù theå laáy ñòa chæ cuûa chuùng, ñòa chæ naøy laø moät
haèng pointer troû ñeán thaønh phaàn töông öùng.
Ví duï 14.9 (GT)
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.1 Khaùi nieäm - Khai baùo struct
Kieåu struct coù theå ñöôïc laáy kích thöôùc tính theo byte nhôø
toaùn töû sizeof, ví duï:
sizeof (struct sinh_vien);
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.2 Maûng caùc struct
Cuù phaùp khai baùo mang cac struct:
struct ten_cau_truc ten_mang [kich_thuoc];
Ví duï:
struct sinh_vien sv[50];
strcpy (sv[0].ho_ten, “Dang thanh Tin”);
sv[0].tuoi = 28;
Ví duï 14.12(SGT)
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.3 Pointer tôùi moät struct
Cuù phaùp khai baùo bieán pointer naøy nhö sau:
struct teân_caáu_truùc *teân_pointer;
Ví duï :
struct sinh_vien a, *psv;
psv =&a;
hoaëc
struct sinh_vien sv[20], *psv;
psv =sv;
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.3 Pointer tôùi moät struct
Vieäc truy xuaát ñen mot thanh phan cua moät caáu truùc thoâng
qua moät pointer ñöôïc thöïc hieän baèng toaùn töû laáy thaønh
phaàn cuûa ñoái töôïng cuûa pointer, kyù hieäu laø -> (coù theå goïi laø
toaùn töû muõi teân).
Ví duï:
printf ("Ho ten sinh vien: %s \n", psv -> ho_ten);
hay
printf ("Ho ten sinh vien: %s \n", (*psv).ho_ten);
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.3 Pointer tôùi moät struct
Ví duï 7.16 (SGT)
C laïi cho pheùp khai baùo struct maø trong caùc thaønh phaàn
cuûa noù laïi coù caùc pointer chæ ñeán moät caáu truùc cuøng kieåu.
Ví duï:
struct node
{
char message[81];
struct node *next;
};
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.4 Struct daïng field
C cho pheùp ta khai baùo caùc thaønh phaàn cuûa struct theo bit
hoaëc moät nhoùm bit. Moät thaønh phaàn nhö vaäy ñöôïc goïi laø
moät field (taïm dòch laø vuøng).
struct teân_caáu_truùc
{
kieåu teân_vuøng 1: soá_bit1;
kieåu teân_vuøng 2:soá_bit2;
...
} teân_bieán;
Vôùi kieåu chæ coù theå laø unsigned, signed hoaëc int
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.4 Struct daïng field
Ví duï:
struct date
{
unsigned day: 5;
unsigned month: 4;
unsgned yar6
int: 0;
} ngay;
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.4 Struct daïng field
Chuù yù:
-Moãi vuøng chæ coù theå daøi toái ña 16 bit (moät int) vaø
ñöôïc caáp choã trong moät int, chöù khoâng theå naèm treân hai
int khaùc nhau ñöôïc.
-Söï phaân boá bit cho caùc field trong moät int cuûa
struct (töø traùi sanphhnôïc lï)khoâng phaân bieät
ñöôïc.
-Moïi thao taùc thöïc hieän treân bieán kieåu field coù lieân
quan ñeán ñòa chæ ñeàu khoâng ñöôïc thöïc hieän
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.4 Struct daïng field
Ví duï:
Khi khai baùo
struct vi_du
{
unsigned field1: 7;
unsigned field2: 5;
unsigned field3: 2;
unsigned field4: 6;
unsigned field5: 7;
} vd;
CHÖÔNG 13
CAÙC KIEÅU DÖÕ LIEÄU COÙ CAÁU TRUÙC VAØ KIEÅU
DÖÕ LIEÄU TÖÏ ÑÒNH NGHÓA
13.1 KIEÅU STRUCT
13.1.4 Struct daïng field
Ví duï:
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 13: Các kiểu dữ liệu có cấu trúc và kiểu dữ liệu tự định nghĩa", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
- bai_giang_he_thong_may_tinh_va_ngon_ngu_c_chuong_13_cac_kieu.pdf