Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Con trỏ hàm
C++ cho phé p thao tá c vớ i cá c con trỏ hà m. Tiệ n í ch tuyệ t vờ i nà y cho phé p truyề n mộ t hà m như là mộ t tham số đ ế n mộ t hà m khá c. Đ ể có thể khai bá o mộ t con trỏ trỏ tớ i mộ t hà m chú ng ta phả i khai bá o nó như là khai bá o mẫ u củ a mộ t hà m như ng phả i bao trong mộ t cặ p ngoặ c đ ơ n () tê n củ a hà m và chè n dấ u sao (*) đ ằ ng trư ớ c.
Trong ví dụ nà y, minus là mộ t con trỏ toà n cụ c trỏ tớ i mộ t hà m có hai tham số kiể u int , con trỏ nà y đ ư ợ c gá m đ ể trỏ tớ i hà m subtraction , tấ t cả đ ề u trê n mộ t dò ng: int (* minus)(int, int) = subtraction; Bà i 10: Bộ Nhớ Đ ộ ng Cho đ ế n nay, trong cá c chư ơ ng trì nh củ a chú ng ta, tấ t cả nhữ ng phầ n bộ nhớ chú ng ta có thể sử dụ ng là cá c biế n cá c mả ng và cá c đ ố i tư ợ ng khá c mà chú ng ta đ ã khai bá o. Kí ch cỡ củ a chú ng là cố đ ị nh và khô ng thể thay đ ổ i trong thờ i gian chư ơ ng trì nh chạ y. Như ng nế u chú ng ta cầ n mộ t lư ợ ng bộ nhớ mà kí ch cỡ củ a nó chỉ có thể đ ư ợ c xá c đ ị nh khi chư ơ ng trì nh chạ y, ví dụ như trong trư ờ ng hợ p chú ng ta nhậ n thô ng tin từ ngư ờ i dù ng đ ể xá c đ ị nh lư ợ ng bộ nhớ cầ n thiế t. Giả i phá p ở đ â y chí nh là bộ nhớ đ ộ ng, C++ đ ã tí ch hợ p hai toá n tử new và delete đ ể thự c hiệ n việ c nà y
Toá n tử new và new[ ] pointer = new type hoặ c pointer = new type [ elements ] Biể u thứ c đ ầ u tien đ ư ợ c dù ng đ ể cấ p phá t bộ nhớ chứ a mộ t phầ n tử có kiể u type. Lệ nh thứ hai đ ư ợ c dù ng đ ể cấ p phá t mộ t khố i nhớ (mộ t mả ng) gồ m cá c phầ n tử kiể u type. int * bobby; trong trư ờ ng hợ p nà y, hệ đ iề u hà nh dà nh chỗ cho 5 phầ n tử kiể u int trong bộ nhớ và trả về mộ t con trỏ trỏ đ ế n đ ầ u củ a khố i nhớ. Vì vậ y lú c nà y bobby trỏ đ ế n mộ t khố i nhớ hợ p lệ gồ m 5 phầ n tử int . Bạ n có thể hỏ i tô i là có gì khá c nhau giữ a việ c khai bá o mộ t mả ng vớ i việ c cấ p phá t bộ nhớ cho mộ t con trỏ như chú ng ta vừ a là m. Đ iề u quan trọ ng nhấ t là kí ch thư ớ c củ a mộ t mả ng phả i là mộ t hằ ng, đ iề u nà y giớ i hạ n kí ch thư ớ c củ a mả ng đ ế n kí ch thư ớ c mà chú ng ta chọ n khi thiế t kế chư ơ ng trì nh trong khi đ ó cấ p phá t bộ nhớ đ ộ ng cho phé p cấ p phá t bộ nhớ trong quá trì nh chạ y vớ i kí ch thư ớ c bấ t kì. Bộ nhớ đ ộ ng nó i chung đ ư ợ c quả n lí bở i hệ đ iề u hà nh và trong cá c mô i trư ờ ng đ a nhiệ m có thể chạ y mộ t lú c và i chư ơ ng trì nh có mộ t khả nă ng có thể xả y ra là hế t bộ nhớ đ ể cấ p phá t. Nế u đ iề u nà y xả y ra và hệ đ iề u hà nh khô ng thể cấ p phá t bộ nhớ như chú ng ta yê u cầ u vớ i toá n tử new , mộ t con trỏ null (zero) sẽ đ ư ợ c trả về. Vì vậ y cá c bạ n nê n kiể m tra xem con trỏ trả về bở i toá n tử new có bằ ng null hay khô ng: int * bobby; Toá n tử delete. delete pointer ; hoặ c delete [] pointer ; Biể u thứ c đ ầ u tiê n nê n đ ư ợ c dù ng đ ể giả i phó ng bộ nhớ đ ư ợ c cấ p phá t cho mộ t phầ n tử và lệ nh thứ hai dù ng đ ể giả i phó ng mộ t khố i nhớ gồ m nhiề u phầ n tử (mả ng). Trong hầ u hế t cá c trì nh dị ch cả hai biể u thứ c là tư ơ ng đ ư ơ ng mặ c dù chú ng là rõ rà ng là hai toá n tử khá c nhau.
NULL là mộ t hằ ng số đ ư ợ c đ ị nh nghĩ a trong thư việ n C++ dù ng đ ể biể u thị con trỏ null. Trong trư ờ ng hợ p hằ ng số nà y chư a đ ị nh nghĩ a bạ n có thể tự đ ị nh nghĩ a nó: #define NULL 0 Dù ng 0 hay NULL khi kiể m tra con trỏ là như nhau như ng việ c dù ng NULL vớ i con trỏ đ ư ợ c sử dụ ng rấ t rộ ng rã i và đ iề u nà y đ ư ợ c khuyế n khí ch đ ể giú p cho chư ơ ng trì nh dễ đ ọ c hơ n.
|