Biến khi được sử dụng trong chương trình phải được khai báo Biến có thể được khai báo ở nhiều chỗ trong chương trình (trong hàm, ngoài hàm...) 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. , p
Trang 1Chương 10
1
SỰ CHUYỂN KIỂU
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 (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
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ếnvàthời gian tồn tại của biến
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
để 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
Trang 2BIẾN CỤC BỘ
5
BIẾN CỤC BỘ
6
BIẾN CỤC BỘ
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 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
Trang 3BIẾN TOÀN CỤC
9
BIẾN TOÀN CỤC
10
BIẾN TOÀN CỤC
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 chương trình Æ biến toàn cục phải đượckhai 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.g rần A
Trang 4BIẾN TOÀN CỤC
13
BIẾN TĨNH
14
BIẾN TĨNH
BIẾN TĨNH
Trang 5BIẾN TĨNH
17
BIẾN THANH GHI (REGISTER)
¾Các khai báo biến thanh ghi Æ đặt bên trong một hàm hoặc
18
¾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 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)
BIẾN THANH GHI (REGISTER)
Trang 6BIẾN THANH GHI (REGISTER)
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 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
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
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
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ử rần A
viên phải tự khởi động trị lúc khai báo hoặc trước khi cần sử
dụng
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)
¾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ị rần A
¾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
Trang 7SỰ 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:
với type là kiểu mà ta muốn ép về cho giá trị để thực hiện
25
với type là kiểu mà ta muốn ép về cho giá_trị để thực hiện
phép toán
BÀI TẬP
26