Tải bản đầy đủ (.ppt) (22 trang)

CẤU TRÚC (lập TRÌNH c TRONG WINDOW) (chữ biến dạng do slide dùng font VNI times, tải về xem bình thường)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (74.75 KB, 22 trang )

CHƯƠNG 7

CẤU TRÚC


CÁÚU TRỤC
Cáúu trục l táûp håüp ca mäüt
hồûc nhiãưu biãún, cọ thãø khạc kiãøu
nhau, âỉåüc nhọm lải dỉåïi dảng
mäüt tãn duy nháút cho tiãûn xỉí l.
(Giäúng cáúu trục Record trong Pascal).
Cáúu trục giụp cho viãûc täø chỉïc
cạc dỉỵ liãûu phỉïc taỷp, õỷc bióỷt
trong nhổợng chổồng trỗnh lồùn vỗ trong
nhióửu tỗnh húng chụng cho phpẹ
nhọm cạc biãún cọ liãn quan lải õóứ
xổớ lyù nhổ mọỹt õồn vở thay vỗ nhổ


I.
1.

Âënh nghéa cáúu trục v khai bạo
biãún cáúu trục
Âënh nghéa cáúu trục
struct <Tãn_kiãøu_cáúu_trục> {
<Kiãøu> <Tãn trỉåìng 1>;
<Kiãøu> <Tãn trỉåìng 2>;
...
}
Trong âọ: struct: L tỉì khoạ


Tãn_kiãøu_cáúu_trục: l tãn báút k,
do ngỉåìi sỉí dủng âàût


Vê duû:
struct Date {
int day;
int month;
int year;
};
2. Âënh nghéa cáúu trục bàịng typedef
Nãúu mäüt cáúu trục âỉåüc âënh nghéa
våïi tãn_kiãøu_cáúu_trục thỗ ta coù thóứ
cuỡng typedef õó õởnh nghộa nhổ sau:
Typedef struct < tãn_kiãøu_cáúu_truïc>
<Tãn_kiãøu>;


Vê dủ:
typedef struct Date DATE;
Nãúu mäüt cáúu trục chỉa âënh nghộa, thỗ
ta coù thóứ duỡng typedef õóứ õởnh nghộa:
Typedef struct [Tãn_kiãøu_cáúu_trục] {
<Kiãøu> <Trỉåìng 1>;
<Kiãøu> <Trỉåìng 2>;
...
} <tãn_kiãøu>;
Vê dủ:
Våïi vê dủ trãn ta cọ thãø dng typedef
âãø âënh nghéa lải nhỉ sau:



typedef struct {

int day;
int month;
int year;
} DATE;

3. Khai baïo biãún cáúu trục
Khai bạo kãút håüp:
struct <Tãn_kiãøu_cáúu_trục> {
<Kiãøu> <Trỉång1>;
<Kiãøu> <Trỉång2>;
...
} <Danh_sạch_cạc_biãún>;


Vê dủ:
struct Date {
int day;
int month;
int year;
} date, *pd;
Khai bạo riãng l:
Dng Tãn_kiãøu_bn_ghi hồûc thäng qua
tãn cáúu trục â âỉåüc âënh nghéa bàịng
typedef
+ Dng tãn_kiãøu_cáúu_trục:
struct < tãn_kiãøu_cáúu_trục>

cạc biãún>


II.

Vê dủ:
struct Date date,*pd;
+
Dng tãn âënh nghéa bàịng typedef
<Tãn_kiãøu> <danh sạch cạc biãún>
Vê dủ:
DATE date,*pd
Khåíi âáưu giạ trë cho cáúu trục:
Ta cọ thãø khåíi âáưu giạ trë cho mäüt
cáúu trục theo phỉång cạch nhỉ l khåíi
âáưu giạ trë cho mng. Theo sau
tãn_biãún_cáúu_trục l dáúu bàịng (=),
sau âọ l danh dạch cạc giạ trë khåíi
âáưu âỉåüc âàût trong cạc dáúu mọc {}.
Cạc giạ trë khåíi âáưu cọ cng kiãøu våïi
cạc trỉåìng tỉång ỉïng trong cáúu trục.


Vê duû:
DATE date = {12, 3, 2003}
III. Truy cáûp âãún cạc thnh pháưn ca cáúu
trục:
Cọ hai cạch tham chiãúu âãún cạc thnh
pháưn ca cáúu trục tỉång ỉïng våïi hai
trỉåìng håüp sau:


Nãúu nọ l mäüt biãún cáúu trục:
Ta dng toạn tỉí dáúu cháúm (.) âãø tham
chiãúu âãún cạc trỉåìng (thnh pháưn) ca
cáúu trục.
Cụ phạp:
<tãn_biãún_cáúu_trục>.<Tãn_trỉåìng>


Nãúu nọ l mäüt biãún con tr tr âãún
cáúu trục:
Ta dng toạn tỉí mi tãn (->) âãø tham chiãúu
âãún.

Cụ phạp:
<tãn_biãún_cáúu_trục>-><Tãn_trỉåìng>
Vê duû:
struct Date {

int day;
int month;
int year;
} date;
typedef struct Date DATE
DATE *p


Våïi cạc khai bạo trãn ta cọ cạc cạch
tham chiãúu sau:
date.day=18;

date.month=4;
date.year=2003;
Hồûc:
p->day = 18
p->month=4;
p->year=2003;
Cạc phẹp toạn con tr tỉång âỉång våïi:
(*p).day=18;
(*p).month=4;
(*p).year=2003;


Gạn hai biãún cáúu trục cho nhau(cng
kiãøu cáúu trục)
Vê dủ:
struct Date d={18,4,2003};
struct Date today;
today=d;
Cọ thãø láúy âëa chè cạc trỉåìng ca
cáúu trục, kãút qu l con tr tr âãún
thnh pháưn tỉång ỉïng.
Vê dủ:
scanf(“%2d - %2d %4d”, &today.day,
&today.month, &today.year);


IV.

Maớng caùc cỏỳu truùc
Vỗ cỏỳu truùc laỡ khọỳi õọỳi tổồỹng dỉỵ liãûu, do âọ

hon ton cọ kh nàng tảo ra mäüt mng cạc
cáúu trục. Khai bạo mng cạc cáúu truc nhỉ sau:
struct <Tãn_kiãøu_cáúu_trục> <Tãn_mng> [<kêch_thỉåïc>];

Hồûc l dng tãn â âỉåüc khai bạo båíi
typedef:
<Tãn_kiãøu> <Tãn_mng>[<kêch_thỉåïc>];
Vê dủ:
Khai bạo mng cáúu trục:
struct Date aa[10];
DATE ab[10];
Lục âọ âãø tham chiãúu âãún cạc trỉåìng ta cọ thãø
dng nhỉ sau:
aa[2].month = 4;
(*(aa+2)).year=2003


V.

Cáúu trục läưng nhau
Mäüt cáúu trục âỉåüc gi l läưng
nhau nãúu cọ mäüt trong cạc trỉåìng
ca cáúu trục ny lải cọ kiãøu cáúu
trục. Cáúu trục läưng nhau thỉåìng
âỉåüc dng phäø bióỳn trong lỏỷp
trỗnh C bồới vỗ noù cho pheùp taỷo ra
cạc dỉỵ liãûu cọ thỉï báûc.
Vi dủ: Tảo cáúu trục âãø lỉu thäng
tin ngy sinh ca mäüt ngỉåìi.



typedef struct
{
char name[30];
struct
{
int day;
int month;
int year;
} birth_day;
} BDATE;


Hoàûc:
typedef struct
{
char name[30];
struct Date birth_day;
} BDATE;
Hoàûc
typedef
{
char name[30];
DATE birth_day;
}BDATE;


Tham chiãúu âãún cạc thnh pháưn ca cáúu
trục läưng nhau thỗ hoaỡn toaỡn giọỳng vồùi vióỷc
tham chióỳu trong cỏỳu truùc khäng läưng nhau,

tuy chè cọ nhỉỵng trỉåìng chỉïa cáúu trục thỗ
phaới thóm tón bióỳn cỏỳu truùc õoù vaỡo.
Vờ duỷ
Vồùi cỏỳu trục vỉìa âënh nghéa åí vê dủ trãn,
ta tham chiãúu âãún cạc thnh pháưn ca
biãún ngaysinh cọ kiãøu BDATE l:
Tãn: ngaysinh.name=“Tran Van A”;
Ngaìy sinh:
ngaysinh.birth_day.day=19;
ngaysinh.birth_day.month=04;
ngaysinh.birth_day.year=2003;


Vóử mỷt lyù thuyóỳt thỗ khọng coù bỏỳt kyỡ mọỹt
giồùi hản no vãư säú mỉïc läưng nhau ca cáúu
trục. Nhỉng lục âọ cạc tham chiãúu âãún cạc
trỉåìng s cng tråí nãn phục tảp v khọ âc
hån.

Cáúu trục tỉû tham chiãúu:
Cạc cáúu trục gi l tỉû tham chiãúu nãúu nọ
chỉïa mäüt trỉåìng l con tr tr âãún chênh
nọ.
Vê dủ:
struct a
{
int a,b;
float c;
struct a *ptoa;
};



Tênh tham chiãúu trỉåïc (Forward
Referencing)
Tênh cháút ny cho phẹp ta âỉa ra cạc khai
bạo cạc con tr tr âãún cạc cáúu trục chỉa
âỉåüc âënh nghéa, âàûc tênh ny cng cho
phẹp ta tảo ra sỉû tỉû tham chiãúu nhỉ â
âãư cáûp åí trãn. Ta cọ thãø tảo ra cáúu trục
sỉû tham chiãúu láùn nhau.
Vê duû:
struct s1
{
int a;
struct s2 *b;
};


struct s2
{
int a;
struct s1 *b;
};
Âàûc tênh ny khäng ạp dủng trong
cạc khai bạo bàịng typedef
VI. Truưn cáúu trục cho hm
Cọ hai cạch truưn cáúu trục cho hm:
- Truưn theo biãún cáúu trục (gi
l truưn theo giạ trë)
- Truưn con tr tr âãún cáúu trục

(gi l truưn theo tham chiãúu)


Vê dủ:
DATE d;
.
.
func (d); /* Âënh nghéa hm func(DATE d) */
func(&d);/* Âënh nghéa hm func (DATE *d)*/
.
.
Truưn theo âëa chè luọn nhanh hồn bồới vỗ
chố laỡ mọỹt con troớ õồn gin âỉåüc sao
chẹp âãún vng âäúi säú. Màût khạc,
truưn theo giạ trë s âi hi ton bäü
cạc cáúu trục s âỉåüc sao chẹp. Chè cọ
hai trỉång håüp nãn truưn theo giaï trë:


Cáúu trục nh (tỉïc l kêch thỉåïc cåỵ
xáúp xè våïi mäüt con tr)
Mún bo âm ràịng låìi gi hm s
khäng lm thay âäøi cáúu trục âỉåüc
truưn vo. (Khi mäüt âäúi sọỳ truyóửn
theo giaù trở, trỗnh bión dởch seợ taỷo
mọỹt baớn sao ca âäúi säú âọ. Hm
âỉåüc gi chè cọ thãø thay âäøi trãn
bn sao m thäi).




×