Bài giảng Lập trình C: Sự lưu trữ của biến sự chuyển kiểu

Biến khiđượcsửdụng trong chương trìnhÆphải được

khai báo

o Biếncóthểđược khai báoởnhiềuchỗtrong chương trình

(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.

pdf7 trang | Chia sẻ: oanh_nt | Lượt xem: 1188 | Lượt tải: 1download
Nội dung tài liệu Bài giảng Lập trình C: Sự lưu trữ của biến sự chuyển kiểu, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
10/26/2009 CBGD: ThS.Trần Anh Dũng 1 CBG D : ThS Chương 10 SỰ LƯU TRỮ CỦA BIẾN S.Trần Anh D ũng 1 SỰ CHUYỂN KIỂU KHÁI NIỆM CBG D : ThS.Tr 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 (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 rần Anh D ũng KHÁI NIỆM CBG D : ThS.Tr 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 3 rần Anh D ũng BIẾN CỤC BỘ CBG D : ThS.Tr 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 để 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. 4 rần Anh D ũng ¾ Từ khóa auto được đặt trong dấu ngoặc Æ có hoặc không có ¾ Biến cục bộ được khai báo luôn là biến auto 10/26/2009 CBGD: ThS.Trần Anh Dũng 2 BIẾN CỤC BỘ CBG D : ThS.Tr 5 rần Anh D ũng BIẾN CỤC BỘ CBG D : ThS.Tr 6 rần Anh D ũng BIẾN CỤC BỘ CBG D : ThS.Tr 7 rần Anh D ũng BIẾN TOÀN CỤC CBG D : ThS.Tr 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 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ằ t á tậ ti khá h 8 rần Anh D ũng - m rong c c p n c n au 10/26/2009 CBGD: ThS.Trần Anh Dũng 3 BIẾN TOÀN CỤC CBG D : ThS.Tr 9 rần Anh D ũng BIẾN TOÀN CỤC CBG D : ThS.Tr 10 rần Anh D ũng BIẾN TOÀN CỤC CBG D : ThS.Tr 11 rần Anh D ũng BIẾN TOÀN CỤC CBG D : ThS.Tr ¾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 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 rần Anh D ũng 10/26/2009 CBGD: ThS.Trần Anh Dũng 4 BIẾN TOÀN CỤC CBG D : ThS.Tr 13 rần Anh D ũng BIẾN TĨNH CBG D : ThS.Tr 14 rần Anh D ũng BIẾN TĨNH CBG D : ThS.Tr 15 rần Anh D ũng BIẾN TĨNH CBG D : ThS.Tr 16 rần Anh D ũng 10/26/2009 CBGD: ThS.Trần Anh Dũng 5 BIẾN TĨNH CBG D : ThS.Tr 17 rần Anh D ũng BIẾN THANH GHI (REGISTER) CBG D : ThS.Tr¾Các khai báo biến thanh ghi Æ đặt bên trong một hàm hoặc 18 rần Anh D ũng đầ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 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. BIẾN THANH GHI (REGISTER) CBG D : ThS.Tr 19 rần Anh D ũng BIẾN THANH GHI (REGISTER) CBG D : ThS.Tr 20 rần Anh D ũng không 10/26/2009 CBGD: ThS.Trần Anh Dũng 6 BIẾN THANH GHI (REGISTER) CBG D : ThS.Tr 21 rần Anh D ũng BIẾN THANH GHI (REGISTER) CBG D : ThS.Tr ¾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 vào họ vi xử lí) Æ không nên khai báo quá nhiều biến thanh 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 22 rần Anh D ũng ¾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 KHỞI ĐỘNG TRỊ CHO BIẾN Ở CÁC LỚP CBG D : ThS.Tr ¾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 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ử 23 rần Anh D ũng dụng KHỞI ĐỘNG TRỊ CHO BIẾN Ở CÁC LỚP CBG D : ThS.Tr ¾Đố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) ¾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ị 24 rần Anh D ũng 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 ¾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 10/26/2009 CBGD: ThS.Trần Anh Dũng 7 SỰ CHUYỂN KIỂU CBG D : ThS.Tr ¾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: với type là kiểu mà ta muốn ép về cho giá trị để thực hiện 25 rần Anh D ũng _ phép toán BÀI TẬP CBG D : ThS.Tr 26 rần Anh D ũng

Các file đính kèm theo tài liệu này:

  • pdfch10_6106.pdf
Tài liệu liên quan