Thông tin tài liệu:
Trong chương này người học sẽ tìm hiểu: Tìm hiểu về con trỏ và khi nào thì sử dụng con trỏ, cách sử dụng biến con trỏ và các toán tử con trỏ, gán giá trị cho con trỏ, phép toán trên con trỏ, so sánh con trỏ, con trỏ và mảng một chiều, con trỏ và mảng nhiều chiều, tìm hiểu cách cấp phát bộ nhớ.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình cơ bản - Chương 8: Con trỏContrỏ Chương8 Mụctiêubàihọc Tìmhiểuvềcontrỏvàkhinàothìsửdụngcontrỏ Cáchsửdụngbiếncontrỏvàcáctoántửcontrỏ Gángiátrịchocontrỏ Phéptoántrêncontrỏ Sosánhcontrỏ Contrỏvàmảngmộtchiều Contrỏvàmảngnhiềuchiều Tìmhiểucáchcấpphátbộnhớ ElementaryProgrammingwithC/Session8/Slide2of30 Contrỏlàgì? Contrỏlàmộtbiến,nóchứađịachỉônhớcủamộtbiếnkhác Nếumộtbiếnchứađịachỉcủamộtbiếnkhác,thìbiếnnày đượcgọilàcontrỏtrỏđếnbiếnthứhai Contrỏcungcấpphươngthứctruyxuấtgiántiếpđếngiátrị củamộtphầntửdữliệu Cáccontrỏcóthểtrỏđếncácbiếncókiểudữliệucơbản nhưint,char,double,haydữliệutậphợpnhưmảnghoặccấu trúc. ElementaryProgrammingwithC/Session8/Slide3of30 Contrỏđượcsửdụngđểlàm gì?Cáctìnhhuốngcontrỏcóthểđượcsửdụng: Đểtrảvềnhiềuhơnmộtgiátrịtừmột hàm Đểtruyềnmảngvàchuỗitừmộthàmđến mộthàmkhácthuậntiệnhơn Đểlàmviệcvớicácphầntửcủamảng thayvìtruyxuấttrựctiếpvàocácphầntử này Đểcấpphátbộnhớvàtruyxuấtbộnhớ (Cấpphátbộnhớtrựctiếp) ElementaryProgrammingwithC/Session8/Slide4of30 Biếncontrỏ Khaibáocontrỏ:chỉramộtkiểucơsởvà mộttênbiếnđượcđặttrướcbởidấu* Cúphápkhaibáotổngquát: type *name; Vídụ: int *var2; ElementaryProgrammingwithC/Session8/Slide5of30 CáctoántửcontrỏHaitoántửđặcbiệtđượcsửdụngvớicontrỏ: & và * &làtoántửmộtngôivànótrảvềđịachỉônhớ củatoánhạng var2=&var1; Toántử*làphầnbổxungcủatoántử&.Đây làtoántửmộtngôivànótrảvềgiátrịchứa trongvùngnhớđượctrỏđếnbởibiếncontrỏ temp=*var2; ElementaryProgrammingwithC/Session8/Slide6of30 Gántrịđốivớicontrỏ Cácgiátrịcóthểđượcgánchocontrỏ thôngquatoántử&. ptr_var=&var; Ởđâyđịachỉcủavarđượclưuvàobiến ptr_var. Cũngcóthểgángiátrịchocontrỏthông quamộtbiếncontrỏkháctrỏcócùng kiểu. ptr_var=&var; ptr_var2=ptr_var; ElementaryProgrammingwithC/Session8/Slide7of30 Gán trịđốivớicontrỏ(tt) Cóthểgángiátrịchocácbiếnthông quacontrỏ *ptr_var=10; Câulệnhtrêngángiátrị10chobiến varnếuptr_varđangtrỏđếnvar ElementaryProgrammingwithC/Session8/Slide8of30 Phéptoáncontrỏ Chỉcóthểthựchiệnphéptoáncộngvàtrừtrên contrỏ intvar,*ptr_var; ptr_var=&var; var=500; ptr_var++; Giảsửbiếnvarđượclưutrữtạiđịachỉ1000 ptr_varlưugiátrị1000.Vìsốnguyêncókích thướclà2bytes,nênsaubiểuthức“ptr_var+ +;”ptr_varsẽcógiátrịlà1002màkhônglà 1001 ElementaryProgrammingwithC/Session8/Slide9of30Phéptoáncontrỏ(tt) ElementaryProgrammingwithC/Session8/Slide10of30 Phéptoáncontrỏ(tt) Mỗilầncontrỏđượctăngtrị,nótrỏđếnônhớ củaphầntửkếtiếp Mỗilầncontrỏđượcgiảmtrị,nótrỏđếnônhớ củaphầntửđứngtrướcnó Tấtcảcontrỏsẽtănghoặcgiảmtrịtheokích thướccủakiểudữliệumàchúngđangtrỏđến ElementaryProgrammingwithC/Session8/Slide11of30 Sosánhcontrỏ Haicontrỏcóthểđượcsosánhtrongmộtbiểu thứcquanhệnếuchúngtrỏđếncácbiếncócùng kiểudữliệu Giảsửptr_avàptr_blàhaibiếncontrỏtrỏđến cácphầntửdữliệuavàb.Trongtrườnghợp này,cácphépsosánhsaulàcóthể: ElementaryProgrammingwithC/Session8/Slide12of30Sosánhcontrỏ(tt) ElementaryProgrammingwithC/Session8/Slide13of30 Contrỏvàmảngmột chiều Địachỉcủamộtphầntửmảngcóthể đượcbiểudiễntheohaicách: Sửdụngkýhiệu&trướcmộtphầntử mảng. Sửdụngmộtbiểuthứctrongđóchỉsố củaphầntửđượccộngvàotêncủa mảng. ElementaryProgrammingwithC/Session8/Slide14of30 ContrỏvàmảngmộtchiềuVídụ#includevoid main(){ static int ary[10] ={1,2,3,4,5,6,7,8,9,10}; int i; for (i= 0;iContrỏvàmảngmộtchiềuvídụtt ElementaryProgrammingwithC/Session8/Slide16of30 Contrỏvàmảngđachiều Mảnghaichiềucóthểđượcđịnhnghĩanhư làmộtcontrỏtrỏtớimộtnhómcácmảng mộtchiềuliêntiế ...