Lp trình nâng cao -Chương 08 -Ngô Công Thng 1
Chương 8. Hàm trong C
I.Khaibáohàm
II. Địnhnghĩahàm
III.Sdnghàm
IV.Contrtrtihàm
V.ydngthưvinhàm
Lp trình nâng cao -Chương 08 -Ngô Công Thng 2
I. Khai báo hàm
1.Giithiuvhàm
2.Cúppkhaibáohàm
3.Cácthamstrongkhaiohàm
Lp trình nâng cao -Chương 08 -Ngô Công Thng 3
1. Gii thiu v hàm
TrongCttccácchươngtrìnhcon đềugilàhàm.
Ngoàicáchàmthưvincósn,ngườilptrình
thttoracáchàm. Để toramthàmngườilp
trìnhphikhaibáo địnhnghĩanó.
Khaibáohàm(functiondeclarationorprototype)
xác địnhtêncahàm,kiudliutrv,slượng
thamsvàkiucatngthams.
Địnhnghĩahàm(functiondefinition)làxác định
côngvicmàhàmsthchinthôngquacáclnh
cahàm.
CáchàmtrongCkhônglngnhau,tclàtrongmt
hàmtakhôngthđịnhnghĩamthàmkhác.
Lp trình nâng cao -Chương 08 -Ngô Công Thng 4
2. pháp khai báo hàm
Cúphápkhaiomnmtrênmtdòng,kết
thúcbngduchmphy.
Kiu_tr_vn_hàm(Kiu_1n_tham_s_1,Kiu_2n_tham_s_2,);
Víd:floatinchtomet(floatx);
intcong(inta,intb);
Mtkhaibáohàmkhôngchobiếtnhnggì
trongthânm.Nóchochotnhbiêndch
biếtvtênhàm,kiucam,slượngcáctham
svàkiucacthams.
Lp trình nâng cao -Chương 08 -Ngô Công Thng 5
2. pháp khai báo hàm (tiếp)
Khaibáohàmcóthđặtbtkỳđâutrướckhigi
hàm.Ttnht đđầutpchachươngtrìnhchính
(chahàmmain)hocđể trướcmthàmsginó.
Trongcácchươngtrìnhnhiufilethìcáckhaibáohàm
thường để trongcácfileheader đuôi.h,còncác định
nghĩahàm để trongcácfilethưvin đuôiobjhoc
lib.
Nếuhàm đượcđịnhnghĩaởđâu đótrướckhigihàm
thìcóthkngcnkhaibáohàm.Tuynhiênvnnên
cókhaibáohàmnhtlàtrongcchươngtrình
nhiuhàmlnhaycácchươngtrìnhnmtrênnhiu
file.
Lp trình nâng cao -Chương 08 -Ngô Công Thng 6
3. Các tham s trong khai báo hàm
Nếuhàmkhôngcóthamsthìtrongdu
ngocđơncakhaibáohàm để trng.Víd:
intxoa();
Têncacthamstrongkhaibáohàm
thkhôngcnxác định.Víd:
floatinchtomet(float,float);
Lp trình nâng cao -Chương 08 -Ngô Công Thng 7
II. Định nghĩa hàm
1.Cúpháp địnhnghĩahàm
2.Lnhreturn
3.Hàmkngtrvgiátr
Lp trình nâng cao -Chương 08 -Ngô Công Thng 8
1. pháp định nghĩa hàm
Kiu_tr_vTên_hàm(Kiu_1Tên_tham_s_1,Kiu_2Tên_tham_s_2,…)
{
//Cáclnhcahàm đểđây
}
Víd:
intcong(inta,intb)
{
intz;
z=a+b;
returnz;
}
Không có du
chm phy
Thân hàm
Lp trình nâng cao -Chương 08 -Ngô Công Thng 9
1. pháp định nghĩa hàm (tiếp)
Dòng đầutiêntrong địnhnghĩahàmging
trongkhaibáohàm,chkháclàkhôngcódu
chmphyvàcácthamsbtbucphi
tên.
Khi đãcókhaibáohàmt địnhnghĩahàm
thường để sauhàmmainhocđể trongmt
tpobj(lib). Để quendnvivicviếtcác
chươngtrìnhln,khithchànhchúngtaviết
cáckhaibáohàmtrongtp.h,còncác định
nghĩahàm để trongtp.obj(lib).
Lp trình nâng cao -Chương 08 -Ngô Công Thng 10
2. Lnh return
Lnhreturn đượcsdngtrongmthàm.Lnh
returnthchinhaichcnăng:
nLàmchomthàmtrvchươngtrìnhginó.
nĐượcng để trvmtgiátr.
Cúphápdùnglnhreturnnhưsau:
returnGiá_tr_tr_v;
hocreturn;
Lnhreturncóthng btkvtrínàotrong
hàmnhưngthường cuihàm.
Vicáchàmcótrvgiátrthìlnhreturnbtbuc
phicó.