Bài giảng Tin học II - Chương VII: Sự lưu trữ của biến sự chuyển kiểu - Trần Anh Dũng
Biến khi được sử 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
(trong hàm, ngoài hàm.)
o Mỗi chỗ như vậy sẽ làm cho biến có khả năng sử dụng
khác nhau, từ đó hình thành nên các lớp lưu trữ biến.
2/3/2009 CBGD: ThS.Trần Anh Dũng 1 Chương VII C B G D : ThS .Trần A nh D ũng SỰ LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 1 KHÁI NIỆM o Biến khi được sử 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 C B G D : ThS .Trần A nh D ũng (trong hàm, ngoài hàm...) o Mỗi chỗ như vậy sẽ làm cho biến có khả năng sử dụng khác nhau, từ đó hình thành nên các lớp lưu trữ biến. 2 2/3/2009 CBGD: ThS.Trần Anh Dũng 2 KHÁI NIỆM o Có hai đặc tính quan trọng của một biến: tầm sử dụng của biến và thời gian tồn tại của biến C B G D : ThS .Trần A nh D ũng 3 BIẾN CỤC BỘ o Biến cục bộ, còn gọi là biến tự động (auto), là các biến được khai báo: ¾ Ngay sau cặp dấu móc { } (cặp dấu này như đã biết ể ắ ầ CB G D : ThS .Trần A nh D ũng đ b t đ u cho một lệnh phức hoặc một thân hàm). ¾ Trong danh sách đối số của hàm. ¾ Từ khóa auto được đặt trong dấu ngoặc Æ 4 có hoặc không có ¾ Biến cục bộ được khai báo luôn là biến auto 2/3/2009 CBGD: ThS.Trần Anh Dũng 3 BIẾN CỤC BỘ C B G D : ThS .Trần A nh D ũng 5 BIẾN CỤC BỘ C B G D : ThS .Trần A nh D ũng 6 2/3/2009 CBGD: ThS.Trần Anh Dũng 4 BIẾN CỤC BỘ C B G D : ThS .Trần A nh D ũng 7 BIẾN TOÀN CỤC Biến toàn cục (global) hay còn gọi là biến ngoài: biến được khai báo ở bên ngoài tất cả các hàm. Biến toàn cục Æ liên kết trị giữa các hàm khác nhau mà việc ề ố ắ ố CB G D : ThS .Trần A nh D ũng truy n theo tham s trở nên r c r i và phức tạp. Các hàm sử dụng chung biến toàn cục: -Nằm trong cùng một tập tin -Nằm trong các tập tin khác nhau 8 2/3/2009 CBGD: ThS.Trần Anh Dũng 5 BIẾN TOÀN CỤC C B G D : ThS .Trần A nh D ũng 9 BIẾN TOÀN CỤC C B G D : ThS .Trần A nh D ũng 10 2/3/2009 CBGD: ThS.Trần Anh Dũng 6 BIẾN TOÀN CỤC C B G D : ThS .Trần A nh D ũng 11 BIẾN TOÀN CỤC ¾Biến toàn cục Æ khai báo một lầ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 C B G D : ThS .Trần A nh D ũng chương trình Æ biến toàn cục phải được khai báo trong một module chương trình nào đó, nhưng nó lại có thể được sử dụng bởi tất cả các hàm khác ở module khác của chương trình. 12 2/3/2009 CBGD: ThS.Trần Anh Dũng 7 BIẾN TOÀN CỤC C B G D : ThS .Trần A nh D ũng 13 BIẾN TĨNH C B G D : ThS .Trần A nh D ũng 14 2/3/2009 CBGD: ThS.Trần Anh Dũng 8 BIẾN TĨNH C B G D : ThS .Trần A nh D ũng 15 BIẾN TĨNH C B G D : ThS .Trần A nh D ũng 16 2/3/2009 CBGD: ThS.Trần Anh Dũng 9 BIẾN TĨNH C B G D : ThS .Trần A nh D ũng 17 BIẾN THANH GHI (REGISTER) C B G D : ThS .Trần A nh D ũng ¾Các khai báo biến thanh ghiÆ đặt bên trong một hàm hoặc đầu một lênh phức (khối lệnh) như khai báo biến cục bộ hoặc khai báo đối số hàm. ¾Tầm sử dụng và thời gian tồn tại của các biến thanh ghi 18 tương tự như các biến cục bộ, nhưng chúng được truy xuất nhanh hơn các biến cục bộ bình thường vì chúng chính là các thanh ghi của bộ vi xử lý. ¾Do đó, các biến thanh ghi thường được sử dụng làm các biến điều khiển trong các vòng lặp hoặc các biến phải truy xuất nhiều lần trong chương trình. 2/3/2009 CBGD: ThS.Trần Anh Dũng 10 BIẾN THANH GHI (REGISTER) C B G D : ThS .Trần A nh D ũng 19 BIẾN THANH GHI (REGISTER) C B G D : ThS .Trần A nh D ũng 20 không 2/3/2009 CBGD: ThS.Trần Anh Dũng 11 BIẾN THANH GHI (REGISTER) C B G D : ThS .Trần A nh D ũng 21 BIẾN THANH GHI (REGISTER) ¾Biến thanh ghi chỉ chấp nhận một số kiểu biến nguyên như int, char, unsigned, long và pointer mà thôi. ¾Số thanh ghi trong mỗi bộ vi xử lí là có giới hạn (tùy thuộc à h i ử lí) Æ khô ê kh i bá á hiề biế th h CB G D : ThS .Trần A nh D ũng v o ọ v x ng n n a o qu n u n an ghi. VD: Đối với máy IBM-PC hoặc tương thích, số biến thanh ghi thật sự thay đổi từ 0 đến 2 ¾Biến thanh ghi sử dụng thanh ghi lưu trữ dữ liệu, vì vậy không thể lấy được địa chỉ của biến thanh ghi 22 2/3/2009 CBGD: ThS.Trần Anh Dũng 12 KHỞI ĐỘNG TRỊ CHO BIẾN Ở CÁC LỚP ¾Mỗi lớp có một đặc điểm riêng và tùy lớp mà C có 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 C B G D : ThS .Trần A nh D ũng tốn thời gian khởi động trị của chúng trong chương trình. ¾Đối với các lớp biến không được C khởi động trịÆ lập trình viên phải tự khởi động trị lúc khai báo hoặc trước khi cần sử dụng 23 KHỞI ĐỘNG TRỊ CHO BIẾN Ở CÁC LỚP ¾Đối với biến toàn cục hoặc biến tĩnh, ngay sau khi được khai báo, mỗi biến sẽ được C tự động gán trị là 0 ¾Trong khi đó biến tự động và biến thanh ghi sẽ có giá trị không xác định (gọi là trị rác) C B G D : ThS .Trần A nh D ũng ¾Biến toàn cục và biến tĩnh có thể được khởi động trị bằng một biểu thức hằng ¾Biến tự động và biến thanh ghi có thể được khởi động trị bằng một biểu thức mà giá trị của biểu thức tới lúc đó đã xác định, trong biểu thức đó có thể có gọi hàm 24 ¾Việc khởi động cho các biến thuộc kiểu dữ kiện có cấu trúc như mảng (array), struct và union chỉ có thể thực hiện được đối với các biến toàn cục hoặc biến tĩnh mà thôi 2/3/2009 CBGD: ThS.Trần Anh Dũng 13 SỰ CHUYỂN KIỂU ¾C có khả năng tự động chuyển kiểu ¾C còn cho phép lập trình viên chuyển kiểu bắt buộc. Cú pháp: C B G D : ThS .Trần A nh D ũng với type là kiểu mà ta muốn ép về cho giá_trị để thực hiện phép toán 25 BÀI TẬP C B G D : ThS .Trần A nh D ũng 26
File đính kèm:
- bai_giang_lap_trinh_c_chuong_vii_su_luu_tru_cua_bien_su_chuy.pdf