Thông tin tài liệu
CHNG1:BINCONTR §1.KHÁINIMCHUNG Mtcontrlàmtbinchađachcamtbinkhác.Numtbin chađachcamtbinkhácthìtanóibinthnht trđnbinthhai. Cũngnhmibinkhác,bincontrcũngphiđckhaibáotrc khidùng.Dngtngquátđkhaibáomtbincontrlà: type*<tênbin> Trongđ ó:typelàbtkìkiudliucbnthíchhpnàođcchpnhn trongCvà<tênbin>làtêncamtbincontr.Kiudliucbnxác đnh kiucanhngbinmàcontrcóthchđn.Vídkhaibáobincon trchđncácbinnguyênvàbinkiukít: char*p; int*x,*y; Contrcómttrđcbit gilàNULL.Trnàycónghĩalàcontrchatr timtđachhplnàoc.Đdùngđctrnàychúngtaphidùng #include<stdio.h>đuchngtrình §2.CÁCPHÉPTOÁNVCONTR C cóhai phéptoánđcbitđivicontr:*và&.Phéptoán&là phéptoántrvđachtrongbnhcabinsaunó.Víd: p=&a; sđtvàobinpđachtrong bnhcabina.Đachnàykhôngcóliên quangìđntrscabina.Nóicáchkhácđachcabinakhôngliên quangìđnnidungcabina. Phéptoán*là phéptoántrvtrcabinđttiđachđcmôt bibinđisaunó.Vídnubinachađachcabinbthì p=*a sđttrsca binbvàobinp Chngtrình11:Lpchngtrìnhins100lênmànhình main() { int*p,a,b; clrscr(); a=100; p=&a; b=*p; printf(%d,b); 1 getch(); } §3.TMQUANTRNGCADLIUKHIKHAI BÁOBINCONTR Cnphibođmlàcontrluônluôntrđnmtkiudliuphù hp.Vídkhikhaibáo contrkiuint,trìnhbiêndchshiulàcontr baogicũngchđnmtbincóđdàilà2byte. Taxétmtchngtrìnhnhsau: Chngtrình12 main() { floatx=10.1,y; int *p; clrscr(); p=&x; y=*p; printf(%f,y); getch(); } Chngtrìnhnàynhmgántrcaxchobinyvàinratrđó.Khi biêndchchngtrìnhkhôngbáolimàchnhcnh: Suspenciouspointerconversioninfunctionmain Tuynhiênchngtrìnhkhônggántrxchoyđc.Lídolàtakhai báomtcontrintvàchonótrtibinfloatx.Nhvytrìnhbiêndchs chchuyn2 bytethôngtinchoychkhôngphi4byteđtoramts dngfloat. §4.CÁCBIUTHCCONTR 1. Cácphépgáncontr:Cũnggingnhbtkìmtbinnàokhác ,tacó thdùngmtcontrvphicamtphépgánđgántrcamt contrchomtcontrkhác.Vídtavit: 2. Chngtrình13: main() { 2 intx; int*p1,*p2; clrscr(); p1=&x; p2=p1; printf(“%p”,p2); getch(); } Chngtrìnhnàyhinlênđachcabinxdnghexbngcách dùngmtmãđnhdngkháccahàm printf().%pmôtrngshinlên mttrchatrongmtbincontrtheodngreg:xxxxvireglàtênca mttrongcácthanhghisegmentcaCPUcònxxxxlàđachoffsettínht đusegment. 2.Cácphéptoánshccacontr:TrongC,tachcóthdùnghaiphép toánshctácđnglêncontrlàphép+và.Đhiuđccáigìsxyra khithchi nmtphéptoánshclêncontrtagisp1làmtcontrch đnmtsnguyêncóđachlà2000.Saukhithchinbiuthc p1++; contrschđns nguyênnmđach2002vìmikhităngcontrlên1 nóschđnsnguyênktipmàmisnguyênlicóđdài2byte.Điu nàycũngđúngkhigim.Víd: p1 ; strtisnguyênđach1998.Nhvymikhicontrtănglên1,nós chđndliuktiptiđachnàođótutheođdàicakiudliu.C còncho phépcnghaytrmtsnguyênvimtcontr.Biuthc: p1=p1+9; slàmchocontrchtiphntth9cókiulàkiumàp1trti vànm sauphânthinthinóđangtrđn.Ngoàicácphéptoántrên,contr khôngchpnhnmtphéptoánnàokhác. 3.Sosánhcáccontr:Chúngtacóthsosánh2contrtrong mtbiuthc quanh.Vídchohaipvàq,phátbiusauđâylàhpl: if(p<q) printf(“ptrodenmotvitribonhothaphonq\n”); Tuynhiêncnnhrngphéptoántrênlà sosánhhaiđachchatrongp vàqchkhôngphinidungcahaibinmàpvàqtrti. 3 4.Cácvídvvicdùngcontr: Chngtrình14:Phântíchchngtrìnhsau: main() { inti,j,*p; i=5; p=&i; j=*p; *p=j+2; } Trongchngtrìnhtrêntakhaibáohaibinnguyênlàivà jvàmt bincontrptrtimtsnguyên.Chngtrìnhsphânphibnhcho 3binnàyvídticácđach100,102và104vìmisnguyêndài2byte vàcon trmcnhiêncũngđcmãhoábng2byte. 100 i 102 j 104 p lnhi=5chotrscabinilà5 100 5 i 102 j 104 p lnhp=&ilàmchocontrchtibininghĩalàcontrpchađachca bini.Bâygipchđnbini. 100 5 i 102 j 104 100 p lnhj=*pđtnidungcabindopchti(bini)vàobinjnghĩalàgán 5choj 100 5 i 102 5 j 104 100 p 4 Mttrongnhngvnđlíthúkhidùngcontrlàxemnidungb nhcamáytính.Chngtrìnhsauđâychophéptavàođachbtđu caRAMmàtamunkhosátvàsauđó hinlênnidungmibytedng shex.Trongchngtrìnhcótkhoáfardùngđthamkhođncácvtrí khôngnmtrongcùngmtsegment. Chngtrình15: main() { unsignedlongintstart; char*p; intt; clrscr(); printf(Nhapvaodiachibatdaumabanmuonxem:); scanf(%lu,&start); p=(charfar*)start; for(t=0;;t++,p++) if(!(t%16)) { printf(%2x\n,*p); getch(); } } Trongchngtrìnhtadùngđnhd ng%xtronghàmprintf()đinra sdnghex.Dòngp=(charfar*)start;dùngbinđisnhpvàothành mtcontr. §5.CONTRVÀMNG Trong chng trc chúng tađã thy các ví d v mng. Con tr thngđcdùngkhixlímng.Chúngtaxétchngtrìnhsau: Chngtrình16: main() { inta[10],*pa,x; a[0]=11; a[1]=22; a[2]=33; a[3]=44; 5 clrscr(); pa=&a[0]; x=*pa; pa++; x=*pa; x=*pa+1; x=*(pa+1); x=*++pa; x=++*pa; x=*pa++; } inta[10],*pa,x; khaibáomtbnggm10phntkiuint,đclitkêlà a[0],a[1], ,a[9],mt contrđchđnmtbinkiuintvàmtbinkiu intlàx. a[0]=11...;ta[4]đna[9]chađckhigán.Nhvychúngschatr ngunhiênđãcóti nhngvtríbnhđãphânphichochúng. pa=&a[0];đtvàopađachcaphntđutiêncamng.Biuthcnày cóthvitđnginlàpa=a;vìtênc amtmngluônluônđctrình biêndchcoilàđachcaphntđutiêncamng.Têncamngkhông cóchskèmtheocóthđcdùngtrongchngtrìnhnhmthng đa ch. x=*pa;đtnidungcabinnguyênmàpatrđnvào(tclàa[0])vàox. Nhvyx=11 pa++;pađctănglên1vàbâygitrvàophntth2ca mngtclà chađachcaphnta[1] x=*pa;patrđnphnta[1]nênx=22 x=*pa+1;x=23 x=*(pa+1);trchtpa+1đcthchin,nghĩa làpatrvàoa[2],sauđó nidungcaa[2]đcgánchoxnênx=33.Tuypathamgiavàophéptoán nhngtrscanókhôngthayđi. x = *++pa;++đcthchintrcnên patrtia[2].Sauđótrcaa[2] đcgánchoxnênx=33 x= ++*pa; *pađc thc hin trc. Do pa ch đn a[2] nên *pa = 33 và ++*pa=34.Nhvyx=34vàa[2]=34 x=*pa++;nidungcapa(tc34)đcđtvàox.Sauđónóđctănglên1 nênchvàoa[3]. Chngtrình17: 6 main() { staticintnum[]={92,81,70,69,58}; intdex; clrscr(); for(dex=0;dex<5;dex++) printf(%d\n,num[dex]); getch(); } Chngtrình18: main() { staticintnum[]={92,81,70,69,58}; intdex; clrscr(); for(dex=0;dex<5;dex++) printf(%d\n,*(num+dex)); getch(); } Haichng trìnhchkhácnhaubi uthc: *(num+dex).Cáchvit nàytngđngvinum[dex].Nóicáchkháctruycpđnphntcóch sdextrongmngnum.Chúngtahiu*(num+dex)nhsau:đutiênnum làđachcaphntđu tiêncamngnumvàtamunbittrsca phntcóchsdex.Vìvynum+dexslàđachcaphntthdex. *(num+dex)xácđnhnidungcaphnt (num+dex).Tómli: *(array+index)tngtarray(index) Cóhaicáchtruycpmnglà: theokíhiumng &array[index] theokíhiucontr array+index Chngtrình19:Tínhnhitđtrungbìnhbngcáchdùngcontr main() { floattemp[40]; floatsum=0.0; intnum,day=0; clrscr(); do 7 { printf(Chonhietdongaythu%d:,day+1); scanf(%f,temp+day); } while(*(temp+day++)>0); num=day1; for(day=0;day<num;day++) sum+=*(temp+day); printf(Nhietdotrungbinhla:%.3f,sum/num); getch(); } Trongvídtrênchúngtađãdùngbiuthc(temp+day)đtruy cpmng. Tuynhiênvitwhile((*temp++)>0)vìtemplàhngcontrchkhôngphi bincontr.Nhvychđcphépthayđitrcabincontrchkhông đcthayđitrcahng contr.Chúngtavitlichngtrìnhnhsau: Chngtrình110: main() { floattemp[40]; floatsum=0.0; intnum,day=0; float*p; clrscr(); p=temp; do { printf(Chonhietdongaythu%d:,day+1); scanf(%f,p); day++; } while(*(p++)>0); p=temp; num=day1; for(day=0;day<num;day++) sum+=*(p++); printf(Nhietdotrungbinhla:%.3f,sum/num); getch(); 8 } Trongchngtrìnhnàyđachcatempđcđavàobincontrp.Sau đótathamkhotipgingnhtemp.Tadùngptrtimngvà*plàni dungcađach đó.Hnnado plàbincontrnêntacóthtăngnó bngphátbiup++. §6.CONTRVÀCHUI RtnhiuhàmthvintrongClàmvicvichuitheocon tr.Víd hàmstrchr()trvcontrtrđnlnxuthinđutiêncamtkítnào đótrongchuiVíd:ptr=strchr(str,’x’);thìbincontrptrsđcgánđa chca lnxuthinkít‘x’đutiêntrongchuistr. Sauđâylàchngtrìnhchophéptagõvàomtcâuvàmtkítcnđnh vtrongcâu.Chngtrìnhschota: đachbt đucachui đachcakítcnđnhv đlchsoviđimđuchui Chngtrình111: #include<string.h> main() { charch,line[81],*ptr; clrscr(); printf(Chomotcau:); gets(line); printf(Cho kitucantim:); ch=getche(); ptr=strchr(line,ch); printf(\nChuoibatdautaidiachi%u.\n,line); printf(Kituxuathienlandautai%u.\n,ptr); printf(Dolavitri%d,(ptrline+1)); getch(); } Chuicũngcóthđckhit obngcontr.Taxétvídsau: Chngtrình111: main() { char*chao=Xinchao!; 9 charten[30]; clrscr(); printf(Chotencuaban:); gets(ten); printf(chao); puts(ten); getch(); } Trongchngtrìnhtrêntađãkhitochuibngphátbiu char*chao=“Xinchao!” thaycho staticcharchao[]=” Xinchao!” C hai cáchđucho cùng mtktqu. Trong phng án dùng con tr , chaolàbincontrnêncóththayđiđc.Vídphátbiu: puts(++chao) schoktqu:inchao! Nutacómtmngchuitacũngcóthdùngmngcontrtrti mngchuinày.Takhitochúnggingnhkhitobincontrđn. Chngtrình1 12: #define max 5 main() { intdex; intenter=0; charname[40]; staticchar*list[max]= { Hung, Ngan, Van, Hoa, Tien }; clrscr(); printf(Chotencuaban:); gets(name); for(dex=0;dex<max;dex++) 10 [...]...if (strcmp(list[dex],name)==0) enter=1; if (enter= =1) printf( Ban da dang ki hoc lop C ); else printf( Ban chua dang ki vao lop ); getch(); } Phát bi u char *list[max] nói r ng list là m t m ng con tr g m max ph n t ch t i các kí t Chúng ta xét ti p m... {40,42,44,46,48} }; int c=10; int i,j; clrscr(); for(i=0;i . Cnphibođmlàcontrluônluôntrđnmtkiudliuphù hp.Vídkhikhaibáo contrkiuint,trìnhbiêndchshiulàcontr baogicũngchđnmtbincóđdàilà2byte. Taxétmtchngtrìnhnhsau: Chngtrình12 main() { floatx=10.1,y; int *p; clrscr(); p=&x; y=*p; printf(%f,y); getch(); } Chngtrìnhnàynhmgántrcaxchobinyvàinratrđó.Khi biêndchchngtrìnhkhôngbáolimàchnhcnh: Suspenciouspointerconversioninfunctionmain Tuynhiênchngtrìnhkhônggántrxchoyđc.Lídolàtakhai báomtcontrintvàchonótrtibinfloatx.Nhvytrìnhbiêndchs chchuyn2 bytethông tin choychkhôngphi4byteđtoramts dngfloat. §4.CÁCBIUTHCCONTR 1.. 5 clrscr(); pa=&a[0]; x=*pa; pa++; x=*pa; x=*pa+1; x=*(pa +1); x=*++pa; x=++*pa; x=*pa++; } inta[10],*pa,x; khaibáomtbnggm10phntkiuint,đclitkêlà a[0],a[1],. ,a[9],mt contrđchđnmtbinkiuintvàmtbinkiu intlàx. a[0]=11...;ta[4]đna[9]chađckhigán.Nhvychúngschatr ngunhiênđãcóti nhngvtríbnhđãphânphichochúng. pa=&a[0];đtvàopađachcaphntđutiêncamng.Biuthcnày cóthvitđnginlàpa=a;vìtênc amtmngluônluônđctrình biêndchcoilàđachcaphntđutiêncamng.Têncamngkhông cóchskèmtheocóthđcdùngtrongchngtrìnhnhmthng đa ch. x=*pa;đtnidungcabinnguyênmàpatrđnvào(tclàa[0])vàox. Nhvyx=11 pa++;pađctănglên1vàbâygitrvàophntth2ca mngtclà chađachcaphnta[1] x=*pa;patrđnphnta[1]nênx=22 x=*pa+1;x=23 x=*(pa +1) ;trchtpa+1đcthchin,nghĩa làpatrvàoa[2],sauđó nidungcaa[2]đcgánchoxnênx=33.Tuypathamgiavàophéptoán nhngtrscanókhôngthayđi. x
Ngày đăng: 17/06/2015, 14:09
Xem thêm: Bài giảng tin học đại cương C++ (chương 1), Bài giảng tin học đại cương C++ (chương 1)