Bài giảng Sự lưu trữ của biến sự chuyển kiểu - Trần Anh Dũng
Bạn đang xem tài liệu "Bài giảng Sự lưu trữ của biến sự chuyển kiểu - Trần Anh Dũng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_su_luu_tru_cua_bien_su_chuyen_kieu_tran_anh_dung.pdf
Nội dung text: Bài giảng Sự lưu trữ của biến sự chuyển kiểu - Trần Anh Dũng
- 2/3/2009 Chương VII CBGD: ThS.Tr SỰ LƯU TRỮ CỦA BIẾN ầ SỰ CHUYỂN KIỂU D n Anh ũ ng 1 KHÁI NIỆM o Biếnkhiđượcsử dụng trong chương trình Æ phải được khai báo o Biến có thể được khai báo ở nhiều chỗ trong chương trình CBGD: ThS.Tr (trong hàm, ngoài hàm ) o Mỗichỗ như vậysẽ làm cho biếncókhả năng sử dụng khác nhau, từđó hình thành nên các lớplưutrữ biến. ầ n Anh D n Anh ũ ng 2 CBGD: ThS.Trần Anh Dũng 1
- 2/3/2009 KHÁI NIỆM o Có hai đặc tính quan trọng củamộtbiến: tầmsử dụng của biến và thờigiantồntạicủabiến CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 3 BIẾN CỤC BỘ o Biếncụcbộ, còn gọilàbiếntựđộng (auto), là các biến được khai báo: ¾ Ngay sau cặpdấumóc{}(cặpdấunàynhưđãbiết để bắt đầu cho mộtlệnh phứchoặcmộtthânhàm). CBGD: ThS.Tr ¾ Trong danh sách đốisố củahàm. ầ n Anh D n Anh ũ ng ¾ Từ khóa auto được đặt trong dấu ngoặc Æ có hoặc không có ¾ Biếncụcbộđược khai báo luôn là biến auto 4 CBGD: ThS.Trần Anh Dũng 2
- 2/3/2009 BIẾN CỤC BỘ CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 5 BIẾN CỤC BỘ CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 6 CBGD: ThS.Trần Anh Dũng 3
- 2/3/2009 BIẾN CỤC BỘ CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 7 BIẾN TOÀN CỤC Biếntoàncục (global) hay còn gọilàbiếnngoài:biến được khai báo ở bên ngoài tấtcả các hàm. Biếntoàncục Æ liên kếttrị giữa các hàm khác nhau mà việc truyền theo tham số trở nên rắcrốivàphứctạp. CBGD: ThS.Tr Các hàm sử dụng chung biếntoàncục: -Nằm trong cùng mộttập tin ầ -Nằm trong các tập tin khác nhau D n Anh ũ ng 8 CBGD: ThS.Trần Anh Dũng 4
- 2/3/2009 BIẾN TOÀN CỤC CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 9 BIẾN TOÀN CỤC CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 10 CBGD: ThS.Trần Anh Dũng 5
- 2/3/2009 BIẾN TOÀN CỤC CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 11 BIẾN TOÀN CỤC ¾Biếntoàncục Æ khai báo mộtlần duy nhất trong chương trình. ¾Nếu một chương trình lại được thiết kế thành nhiều module CBGD: ThS.Tr chương trình Æ biếntoàncụcphải được khai báo trong một module chương trình nào đó,nhưng nó lạicóthểđượcsử dụng bởitấtcả các hàm khác ở module khác củachương trình. ầ n Anh D n Anh ũ ng 12 CBGD: ThS.Trần Anh Dũng 6
- 2/3/2009 BIẾN TOÀN CỤC CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 13 BIẾN TĨNH CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 14 CBGD: ThS.Trần Anh Dũng 7
- 2/3/2009 BIẾN TĨNH CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 15 BIẾN TĨNH CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 16 CBGD: ThS.Trần Anh Dũng 8
- 2/3/2009 BIẾN TĨNH CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 17 BIẾN THANH GHI (REGISTER) CBGD: ThS.Tr ầ ¾Các khai báo biến thanh ghi Æ đặt bên trong mộthàmhoặc D n Anh đầumộtlênhphức(khốilệnh) như khai báo biếncụcbộ hoặc ũ khai báo đốisố hàm. ng ¾Tầm sử dụng và thời gian tồn tạicủacácbiếnthanhghi tương tự như các biếncụcbộ,nhưng chúng đượctruyxuất nhanh hơn các biếncụcbộ bình thường vì chúng chính là các thanh ghi củabộ vi xử lý. ¾Do đó, các biến thanh ghi thường đượcsử dụng làm các 18 biến điềukhiển trong các vòng lặphoặccácbiếnphảitruy xuất nhiềulần trong chương trình. CBGD: ThS.Trần Anh Dũng 9
- 2/3/2009 BIẾN THANH GHI (REGISTER) CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 19 BIẾN THANH GHI (REGISTER) CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 20 không CBGD: ThS.Trần Anh Dũng 10
- 2/3/2009 BIẾN THANH GHI (REGISTER) CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 21 BIẾN THANH GHI (REGISTER) ¾Biến thanh ghi chỉ chấpnhậnmộtsố kiểubiến nguyên như int, char, unsigned, long và pointer mà thôi. ¾Số thanh ghi trong mỗibộ vi xử lí là có giớihạn(tùythuộc vào họ vi xử lí) Æ không nên kha i báoquá nhiều biến thanh CBGD: ThS.Tr ghi. VD: ĐốivớimáyIBM-PChoặctương thích, số biếnthanh ầ ghi thậtsự thay đổitừ 0 đến2 D n Anh ¾Biến thanh ghi sử dụng thanh ghi lưutrữ dữ liệu, vì vậy ũ không thể lấy được địachỉ củabiến thanh ghi ng 22 CBGD: ThS.Trần Anh Dũng 11
- 2/3/2009 KHỞI ĐỘNG TRỊ CHO BIẾN Ở CÁC LỚP ¾Mỗilớpcómột đặc điểm riêng và tùy lớpmàCcókhả năng tựđộng gán giá trị ban đầu cho biến lúc chúng được khai báo. Æ Cần hiểu rõ việc khởi động trị này của các lớp để không phải CBGD: ThS.Tr tốnthờigiankhởi động trị của chúng trong chương trình. ¾Đốivới các lớpbiến không đượcCkhởi động trị Æ lậptrình ầ viên phảitự khởi động trị lúc khai báo hoặctrước khi cầnsử D n Anh dụng ũ ng 23 KHỞI ĐỘNG TRỊ CHO BIẾN Ở CÁC LỚP ¾Đốivớibiếntoàncụchoặcbiếntĩnh, ngay sau khi đượckhai báo, mỗibiếnsẽđượcCtựđộng gán trị là 0 ¾Trong khi đóbiếntựđộng và biến thanh ghi sẽ có giá trị không xác định (gọi là trị rác) CBGD: ThS.Tr ¾Biếntoàncụcvàbiếntĩnh có thểđượckhởi động trị bằng một biểuthứchằng ầ ¾Biếntựđộng và biến thanh ghi có thểđượckhởi động trị D n Anh bằng mộtbiểuthứcmàgiátrị củabiểuthứctớilúcđó đãxác ũ định, trong biểuthức đócóthể có gọihàm ng ¾Việckhởi động cho các biếnthuộckiểudữ kiệncócấutrúc như mảng (array), struct và union chỉ có thể thựchiện được đốivới các biếntoàncụchoặcbiếntĩnh mà thôi 24 CBGD: ThS.Trần Anh Dũng 12
- 2/3/2009 SỰ CHUYỂN KIỂU ¾Ccókhả năng tựđộng chuyểnkiểu ¾C còn cho phép lập trình viên chuyểnkiểubắtbuộc. Cú pháp: CBGD: ThS.Tr ầ với type là kiểumàtamuốnépvề cho giá_trịđểthựchiện D n Anh phép toán ũ ng 25 BÀI TẬP CBGD: ThS.Tr ầ n Anh D n Anh ũ ng 26 CBGD: ThS.Trần Anh Dũng 13