Upload
zhu-ghe-liang
View
28
Download
0
Embed Size (px)
Citation preview
Hm Hm -- FunctionFunction
Hm Hm -- FunctionFunction
MtMt ss nguynnguyn tctc CchCch khaikhai bobo vv gigi thcthc hinhin PrototypePrototype caca hmhm TruynTruyn thamtham ss chocho hmhm BinBin tonton cc,cc, binbin cccc b,b, binbin static,static, binbin thanhthanh ghi,ghi,
CchCch thcthc CC thcthc hinhin cccc lili gigi hmhm stackstack..
Mt s nguyn tcMt s nguyn tc CcCc hmhm trongtrong NNLTNNLT CC uu ngangngang cpcp vivi nhaunhau::
HmHm khngkhng cc khaikhai bobo lnglng nhaunhau.. ThTh tt khaikhai bobo khngkhng quanquan trngtrng..
HmHm cc thth nhnnhn vv xx ll nhiunhiu thamtham ss hochoc khngkhng ccthamtham ss nono
HmHm cc thth trtr vv mtmt gigi trtr hochoc khngkhng.. BinBin khaikhai bobo trongtrong hmhm FF chch cc gigi trtr trongtrong F,F, khngkhng ss
dngdng cc binbin nyny trongtrong cccc hmhm khckhc cc..
V d: hm tnh xV d: hm tnh xnn
double Power(double x, int n){
double result = 1;for(int i=1; i< n; i++)
result *= x;return result;
}
nhn vo 2 tham s khi c gikiu ca gi tr tr v
gi tr c tr v qua lnh return
V d: gi thc hin hm PowerV d: gi thc hin hm Power
#include double Power(double, int);int main(){
double m = Power(2, 3);printf(3.5 ^ 4 = %lf, Power(3.5, 4));return 0;
}
Ch th cho chng trnh bit prototype ca hm Power
3.5 v 4: 2 tham s thc s
Mt s li thng gpMt s li thng gp
#include
int main(){
int m = Power(2, 3);printf(3.5 ^ 4 = %lf, Power(4));return 1.0;
}
Compiler khng hiu c hm Power
gi tr tr v khng khp kiu
hm Power thiu tham s
PrototypesPrototypes DngDng khaikhai bobo
double Power(double, int);
cc hiuhiu ll khaikhai bobo prototypeprototype caca hmhm PowerPower cc dngdng khikhi chngchng trnhtrnh ss dngdng mtmt hmhm trctrc khikhi
khaikhai bobo.. KhaiKhai bobo prototypeprototype thngthng bobo chocho trnhtrnh binbin dchdch bitbit kiukiu
caca gigi trtr trtr vv vv mm tt chichi tittit vv cccc thamtham ss caca hmhm.. CcCc hmhm thth vinvin chunchun cc khaikhai bobo prototypeprototype trongtrong cccc
tptp tintin headerheader (stdio(stdio..h,h, conioconio..h,h, )).. CcCc hmhm dodo lplp trnhtrnh vinvin tt xyxy dngdng phiphi tt khaikhai bobo
prototypeprototype..
Hm: dng tng qutHm: dng tng qut
kiu tr v tn hm(danh sch tham s hnh thc){
//khai bo cc bin ca hm
//cc lnh thc thi
return gi tr tr v; //hm void khng c gi tr tr v}
header ca hm
thn (body) hm
float g=6.5;void main(){
int i = 5, j, k = 2;float f = 2.8F;d = 3.7;
}void F(int v){
double d, e = 0.0, f;i++; g--;f = 0.0;
}
Tm tc dng ca binTm tc dng ca bin BinBin tonton cccc::
KhngKhng thucthuc khikhino,no, cc tctc dngdngtrongtrong tonton chngchngtrnhtrnh kk tt khikhi khaikhaibobo
BinBin cccc bb:: khaikhaibobo trongtrong mtmt khi,khi,chch cc tctc dngdngtrongtrong khikhi nyny
compiler khng chp nhn d, i
f ca hm F, khng phi ca main
Truyn tham s cho hmTruyn tham s cho hm
CC hh trtr 22 cchcch truyntruyn thamtham ss:: TruynTruyn thamtham ss bibi gigi trtr ((truyntruyn gigi trtr -- callcall byby
value)value) TruynTruyn thamtham ss bibi aa chch ((truyntruyn aa chch -- callcall
byby address)address)
MM rngrng vivi C++C++ TruynTruyn thamtham chiuchiu (call(call byby reference)reference)
Truyn gi trTruyn gi tr
HmHm ss xx ll trntrn bnbn saosao caca thamtham ss HmHm khngkhng thth thaythay ii gigi trtr caca thamtham ss cc.. cc dngdng trongtrong cccc trngtrng hphp cncn chuynchuyn dd liuliu
vovo bnbn trongtrong hmhm xx l,l, tnhtnh tonton CcCc vv dd trntrn uu dngdng kiukiu truyntruyn thamtham ss bibi gigi trtr VV dd hmhm cc snsn caca CC truyntruyn gigi trtr::
floatfloat sqrt(float)sqrt(float);; doubledouble pow(double,pow(double, double)double);;
Truyn gi tr Truyn gi tr -- v dv d#include void change(int v);int main(){
int var = 5;change(var);printf("main: var = %i\n", var);return 0;
}void change(int v){
v *= 100;printf("change: v = %i\n", v);
}
change: v = 500main: var = 5
hm change khng thay i gi tr ca var
Truyn a chTruyn a ch
HmHm ss xx ll trntrn chnhchnh thamtham ss nhnh vovo aa chchcaca chngchng
HmHm cc thth thaythay ii gigi trtr caca thamtham ss.. cc dngdng trongtrong cccc trngtrng hphp cncn chuynchuyn dd liuliu
ll ktkt ququ xx ll cc bnbn trongtrong hmhm rara ngoingoi chochocccc hmhm khckhc ss dngdng..
V d hm c sn ca C truyn a ch:V d hm c sn ca C truyn a ch:int scanf(const char *format, adr1, adr2, );int scanf(const char *format, adr1, adr2, );
functionfunctioninputsinputs outputsoutputs
Truyn a ch Truyn a ch -- v dv d#include void change(int *v);int main(){
int var = 5;change(&var);printf("main: var = %i\n", var);return 0;
}void change(int *v){
(*v) *= 100;printf("change: *v = %i\n", (*v));
}
change: *v = 500main: var = 500
v: tham s a ch ca s int, khai bo vi du *
truyn a ch ca var vo hm change
Phng thc trao i d liuPhng thc trao i d liu CC dngdng 11 stackstack lulu trtr cccc binbin cccc bb vv cccc chuynchuyn
cccc thamtham ss chocho hmhm vivi mimi lnln gigi hmhm thcthc hinhin HmHm gigi (O)(O) ctct cccc thamtham ss vovo stackstack.. GiGi thcthc hinhin hmhm cc gigi (F)(F).. FF nhnnhn lyly cccc thamtham ss tt stackstack FF toto cccc binbin cccc bb ngng vivi cccc thamtham ss trntrn stackstack KhiKhi ktkt thc,thc, FF cpcp nhtnht gigi trtr cccc thamtham ss (ref)(ref) vv trtr iuiu
khinkhin chocho OO OO nhnnhn lyly cccc gigi trtr mimi caca thamtham ss cngcng nhnh gigi trtr trtr
vv
#include double power(int, int);int main(void){
int x = 2;double d;d = power(x, 5);printf("%lf\n", d);return 0;
}double power(int n, int p){
double result = n;while(--p > 0)
result *= n;return result;
}
main: x2
main: d?
power: p5power: n2
power: result32.0
Phng thc trao i d liuPhng thc trao i d liu
32.0
TngTng ktkt
KhaiKhai bobo vv gigi thcthc hinhin hmhm KhaiKhai bobo prototypesprototypes TmTm tctc dngdng caca binbin TruynTruyn thamtham ss chocho hmhm VnVn tt chcchc dd liuliu trongtrong chngchng trnhtrnh