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.
7 trang |
Chia sẻ: oanh_nt | Lượt xem: 1276 | Lượt tải: 1
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:
- ch10_6106.pdf