Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 10: Lớp lưu trữ của biến - Sự chuyển kiểu (GV. Nguyễn Nhật Nam)

41 4 0
Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 10: Lớp lưu trữ của biến - Sự chuyển kiểu (GV. Nguyễn Nhật Nam)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 10: Lớp lưu trữ của biến - Sự chuyển kiểu (GV. Nguyễn Nhật Nam). Bài giảng có nội dung trình bày về khái niệm; biến toàn cục và biến cục bộ; biến tĩnh (static); biến REGISTER; khởi động trị cho biến ở các lớp; sự chuyển kiểu; định vị vùng nhớ cho các lớp lưu trữ;... Mời các bạn cùng tham khảo!

CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.1 Khái niệm 10.2 Biến toàn cục biến cục 10.3 Biến tónh (static) 10.4 Biến REGISTER 10.5 Khởi động trị cho biến lớp 10.6 Sự chuyển kieåu 10.6 Định vị vùng nhớ cho lớp lưu trữ Bài tập cuối chương CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.1 KHÁI NIỆM Mỗi biến sử dụng chương trình phải khai báo, nhiên biến khai báo nhiều chỗ chương trình, biến khai báo hàm, hàm , chỗ làm cho biến có khả sử dụng khác nhau, từ hình thành nên lớp lưu trữ biến CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.1 KHÁI NIỆM Đối với C, dựa vào cách mà biến lưu trữ sử dụng, biến lớp lưu trữ khác sau đây: - Lớp biến tự động - Lớp biến toàn cục biến cục - Lớp biến tónh - Lớp biến ghi Có hai đặc tính quan trọng biến: tầm sử dụng biến thời gian tồn biến CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.1 KHÁI NIỆM Tầm sử dụng biến (scope) nơi mà biến sử dụng lệnh chương trình Do đặc tính mà ta có hai lớp lưu trữ khác - lớp lưu trữ biến toàn cục (global storage class) - lớp lưu trữ biến cục (local storage class) CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.1 KHÁI NIỆM Thời gian tồn biến (time life) xác định biến với giá trị tồn có ý nghóa đến lúc Sinh lớp: -lớp biến tự động (auto) -lớp biến tónh (static) CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.1 KHÁI NIỆM Lớp biến Tự động Tónh (không kết hợp được) Biến toàn cục tónh Biến cục tự động Biến cục tónh Lớp biến Toàn cục Cục (hay biến tự động) CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.2 BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ 10.2.1 Biến cục Biến cục bộ, gọi biến tự động (auto), biến khai báo sau cặp dấu móc { } (cặp dấu biết để bắt đầu cho lệnh phức thân hàm), biến khai báo danh sách đối số hàm CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.2 BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ 10.2.1 Biến cục Khi khai báo biến cục ta đặt không đặt từ khóa auto phía trước khai báo biến cục theo cú pháp sau: [auto] kiểu danh_sách_tên_biến; Ví dụ: int tong (int n) { auto int i; } CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.2 BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ 10.2.1 Biến cục Khi khai báo biến cục ta đặt không đặt từ khóa auto phía trước khai báo biến cục theo cú pháp sau: [auto] kiểu danh_sách_tên_biến; Ví dụ: int tong (int n) { auto int i; } CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.2 BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ 10.2.1 Biến cục Ví dụ : Xét chương trình xếp hai số, in kết theo thứ tự từ lớn tới nhỏ CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.4 BIẾN REGISTER Ví duï: register int i; register char c; register unsigned u; resister long l; register int *r; register t; CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.4 BIẾN REGISTER Tầm sử dụng thời gian tồn biến ghi tương tự biến cục bộ, chúng truy xuất nhanh biến cục bình thường chúng ghi vi xử ly Các biến ghi thường sử dụng làm biến điều khiển vòng lặp biến phải truy xuất nhiều lần chương trình CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.5 KHỞI ĐỘNG TRỊ CHO BIẾN Ở CÁC LỚP Đối với biến toàn cục biến tónh, sau khai báo, biến C tự động gán trị Trong biến tự động biến ghi có giá trị không xác định (gọi trị rác) trị biểu thức CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.5 KHỞI ĐỘNG TRỊ CHO BIẾN Ở CÁC LỚP Trong suốt trình chạy chương trình, biến toàn cục biến tónh khởi động trị lần, lần mà khai báo biến thực thi Biến toàn cục biến tónh khởi động trị biểu thức Biến tự động biến ghi khởi động trị biểu thức mà giá trị biểu thức tới lúc xác định(có thể gọi hàm) CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.5 KHỞI ĐỘNG TRỊ CHO BIẾN Ở CÁC LỚP Việc khởi động cho biến thuộc kiểu kiện có cấu trúc mảng (array), struct union thực biến toàn cục biến tónh mà CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.6 SỰ CHUYỂN KIỂU Khi thực phép toán số học luân lý, C thực chuyển kiểu tự động C cho phép lập trình viên thực việc chuyển kiểu bắt buộc, ép kiểu (type casting) Cú pháp để ép kiểu biến, hay biểu thức: (type) giá_trị CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.6 SỰ CHUYỂN KIỂU Ví dụ: Cho khai báo bieán sau: int a = 10, b = 3; double d; biểu thức cho kết đúng, giải thích?(xem lại thứ tự ưu tiên phép toán C) a) d = (double)(a/b); b) d = (double)a/b; c) d = a/(double)b; CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.7 ĐỊNH VỊ VÙNG NHỚ CHO CÁC LỚP LƯU TRỮ Có hai chế giúp dịch làm công việc này: -Bộ dịch cần dùng cách đắn bảng biểu trưng để theo dõi biến trình dịch -Bộ dịch theo phân chia nhớ hệ thống, cẩn thận định vị nhớ cho biến dựa vào đặc tính cụ thể, với vùng nhớ xác định dành riêng cho đối tượng đặc biệt CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.7 ĐỊNH VỊ VÙNG NHỚ CHO CÁC LỚP LƯU TRỮ 10.6.1 Bảng biểu trưng Bộ dịch C theo dõi biến chương trình với bảng biểu trưng Mỗi đầu vào bảng biểu trưng cho biến chứa: (1) tên biến, (2) kiểu biến, (3) vị trí nhớ mà biến định vị (4) danh hiệu định khu vực mà biến khai báo (tức tầm vực biến đó) CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.7 ĐỊNH VỊ VÙNG NHỚ CHO CÁC LỚP LƯU TRỮ 10.6.1 Bảng biểu trưng Ví dụ 11.18: Chương trình tính tốc độ mạng #include int main() { int amount; int rate; int time; int hours; int minutes; int seconds; // Nhập: số lượng byte tốc độ truyền mạng printf (“Có byte liệu truyền? ”); scanf (“%d”, &amount); printf (“Tốc độ truyền (bytes/giây)? ”); scanf (“%d”, &rate); CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.7 ĐỊNH VỊ VÙNG NHỚ CHO CÁC LỚP LƯU TRỮ 10.6.1 Bảng biểu trưng Ví dụ 11.18: Chương trình tính tốc độ mạng // Tính thời gian theo số giây time = amount / rate;` // Chuyển thời gian sang giờ, phút giây hours = time / 3600;// 3600 giây minutes = (time % 3600) / 60;// 60 giây phút seconds = (time % 3600) % 60;// phần dư lại giây // Xuất kết printf(“Thời gian: %dh %dm %ds\n”, hours, minutes, seconds); } CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.7 ĐỊNH VỊ VÙNG NHỚ CHO CÁC LỚP LƯU TRỮ 10.6.1 Bảng biểu trưng Danh hiệu Kiểu Amount int Vị trí (offset) Hours int -3 Main Minutes int -4 Main Rate Seconds Time int int int -1 -5 -2 Main Main Main Tầm vực Main CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU 10.7 ĐỊNH VỊ VÙNG NHỚ CHO CÁC LỚP LƯU TRỮ 10.6.2 Định vị vùng nhớ cho biến Có hai vùng nhớ mà biến C định vị đó: vùng liệu tồn cục (global data section) ngăn xếp thực thi (run-time stack) (ngồi cịn có biến ghi) - Vùng biến tồn cục nơi chứa tất biến toàn cục Tổng quát hơn, nơi chứa biến tĩnh - Vùng stack thực thi nơi chứa biến cục (hay lớp biến lưu trữ tự động) Vùng offset bảng biểu trưng cung cấp thơng tin xác vị trí nhớ biến Nó cho biết số nhớ tính từ địa vùng nhớ chứa biến CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU BÀI TẬP CUỐI CHƯƠNG Viết hàm cho lần gọi hàm hàm trả trị số sau trị trước dãy số Fibonaci Viết chương trình với hàm tính biểu thức sau đây: dùng không dùng biến ghi t T   n   (n  1)   (n  2)     n! (n  1)! (n  2)! 1! (1   n)  (1   (n  1))  (1   (n  2))   1! n ! (n  1)!  (n  2)!   1! CHƯƠNG 10 LỚP LƯU TRỮ CỦA BIẾN SỰ CHUYỂN KIỂU BÀI TẬP CUỐI CHƯƠNG Viết chương trình gồm hai module: main.c func.c, module main.c lưu hàm main() có lệnh gọi nhập ba hệ số tam thức bậc hai, kiểm tra in ấn; module func.c lưu hàm cần thiết để giải phương trình bậc hai biện luận tam thức bậc hai In hình số nguyên tố từ đến 1.000 Dùng biến ghi không dùng biến ghi Kiểm tra thời gian ... Biến c? ? ?c tónh Lớp biến Toàn c? ? ?c C? ?c (hay biến tự động) CHƯƠNG 10 LỚP LƯU TRỮ C? ??A BIẾN SỰ CHUYỂN KIỂU 10.2 BIẾN TOÀN C? ? ?C VÀ BIẾN C? ? ?C BỘ 10.2.1 Biến c? ? ?c Biến c? ? ?c bộ, gọi biến tự động (auto), biến. .. kh? ?c sau đây: - Lớp biến tự động - Lớp biến toàn c? ? ?c biến c? ? ?c - Lớp biến tónh - Lớp biến ghi C? ? hai đ? ?c tính quan trọng biến: tầm sử dụng biến thời gian tồn biến CHƯƠNG 10 LỚP LƯU TRỮ C? ??A BIẾN... SỰ CHUYỂN KIỂU 10.5 KHỞI ĐỘNG TRỊ CHO BIẾN Ở C? ?C LỚP Vi? ?c khởi động cho biến thu? ?c kiểu kiện c? ? c? ??u tr? ?c mảng (array), struct union th? ?c biến toàn c? ? ?c biến tónh mà CHƯƠNG 10 LỚP LƯU TRỮ C? ??A BIẾN

Ngày đăng: 05/07/2022, 13:52

Hình ảnh liên quan

-Bộ dịch cần dùng một cách đúng đắn bảng biểu trưng để theo dõi cácbiến trong quá trình dịch. - Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 10: Lớp lưu trữ của biến - Sự chuyển kiểu (GV. Nguyễn Nhật Nam)

d.

ịch cần dùng một cách đúng đắn bảng biểu trưng để theo dõi cácbiến trong quá trình dịch Xem tại trang 34 của tài liệu.
10.6.1 Bảng biểu trưng - Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 10: Lớp lưu trữ của biến - Sự chuyển kiểu (GV. Nguyễn Nhật Nam)

10.6.1.

Bảng biểu trưng Xem tại trang 35 của tài liệu.
10.6.1 Bảng biểu trưng - Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 10: Lớp lưu trữ của biến - Sự chuyển kiểu (GV. Nguyễn Nhật Nam)

10.6.1.

Bảng biểu trưng Xem tại trang 36 của tài liệu.
10.6.1 Bảng biểu trưng - Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 10: Lớp lưu trữ của biến - Sự chuyển kiểu (GV. Nguyễn Nhật Nam)

10.6.1.

Bảng biểu trưng Xem tại trang 37 của tài liệu.
10.6.1 Bảng biểu trưng - Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 10: Lớp lưu trữ của biến - Sự chuyển kiểu (GV. Nguyễn Nhật Nam)

10.6.1.

Bảng biểu trưng Xem tại trang 38 của tài liệu.
10.7 ĐỊNH VỊ VÙNG NHỚ CHO CÁC LỚP LƯU TRỮ - Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 10: Lớp lưu trữ của biến - Sự chuyển kiểu (GV. Nguyễn Nhật Nam)

10.7.

ĐỊNH VỊ VÙNG NHỚ CHO CÁC LỚP LƯU TRỮ Xem tại trang 39 của tài liệu.
Vùng offset trong bảng biểu trưng cung cấp thơng tin chính xác về vị trí trong bộ nhớ của các biến - Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 10: Lớp lưu trữ của biến - Sự chuyển kiểu (GV. Nguyễn Nhật Nam)

ng.

offset trong bảng biểu trưng cung cấp thơng tin chính xác về vị trí trong bộ nhớ của các biến Xem tại trang 39 của tài liệu.

Trích đoạn

Tài liệu cùng người dùng

Tài liệu liên quan