intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Hệ thống máy tính và ngôn ngữ C: Chương 10 - TS. Nguyễn Phúc Khải

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:34

5
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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 và sự chuyển kiểu, được biên soạn gồm các nội dung chính sau: 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ủ đề:
Lưu

Nội dung Text: Bài giảng Hệ thống máy tính và ngôn ngữ C: Chương 10 - TS. Nguyễn Phúc Khải

  1. om .c ng co an th o ng du u cu Company LOGO 1 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  2. Các nội dung:  Khái niệm om .c  Biến toàn cục và biến cục bộ ng  Biến tĩnh (static) co  Biến REGISTER an  Khởi động trị cho biến ở các lớp th o ng  Sự chuyển kiểu du u  Định vị vùng nhớ cho các lớp lưu trữ cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 2
  3. KHÁI NIỆM  Mỗi biến khi được sử dụng trong chương trình om đều phải được khai báo, tuy nhiên biến có thể .c được khai báo ở nhiều chỗ trong chương trình, ng co biến có thể được khai báo trong hàm, ngoài an hàm..., mỗi chỗ như vậy sẽ làm cho biến có th khả năng sử dụng khác nhau, từ đó hình thành o ng nên các lớp lưu trữ biến. du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 3
  4. KHÁI NIỆM  Dựa vào cách mà biến được lưu trữ và sử om dụng, biến sẽ ở một trong các lớp lưu trữ khác .c nhau sau đây: ng co  Lớp biến tự động an Lớp biến toàn cục và biến cục bộ th  ng  Lớp biến tĩnh o du  Lớp biến thanh ghi u  Có hai đặc tính quan trọng: tầm sử dụng và cu thời gian tồn tại của biến. CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 4
  5. KHÁI NIỆM  Tầm sử dụng (scope) là nơi mà biến có thể om được sử dụng trong các lệnh của chương trình. .c Do đặc tính này mà ta có hai lớp lưu trữ khác ng co nhau là: an lớp lưu trữ biến toàn cục (global storage class) th  ng  lớp lưu trữ biến cục bộ (local storage class) o du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 5
  6. KHÁI NIỆM  Thời gian tồn tại (time life) xác định rằng biến om với giá trị đang tồn tại trong nó sẽ có ý nghĩa .c đến lúc nào. Sinh ra 2 lớp: ng co  lớp biến tự động (auto) an lớp biến tĩnh (static) th  ng o du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 6
  7. KHÁI NIỆM om Lớp biến .c Lớp biến Tự động Tĩnh ng co an Toàn cục (không kết hợp được) Biến toàn cục tĩnh th o ng Biến cục bộ tự động du Cục bộ Biến cục bộ tĩnh (hay biến tự động) u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 7
  8. BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ  Biến cục bộ, còn gọi là biến tự động (auto), là om các biến được khai báo ngay sau cặp dấu móc .c { và } (cặp dấu này như đã biết để bắt đầu cho ng co một lệnh phức hoặc một thân hàm), hoặc là các an biến được khai báo trong danh sách đối số của th ng hàm. o  Khi khai báo biến cục bộ ta có thể đặt hoặc du u không đặt từ khóa auto phía trước khai báo cu biến cục bộ. CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 8
  9. BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ [auto] kiểu danh_sách_tên_biến; om .c  Ví dụ: ng int tong (int n) co { an auto int i; ... } th o ng du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 9
  10. BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ  Biến toàn cục (global) hay còn gọi là biến om ngoài là biến được khai báo ở bên ngoài tất cả .c các hàm. Biến này có thể được sử dụng để liên ng co kết trị giữa các hàm khác nhau mà việc truyền an theo tham số trở nên rắc rối và phức tạp. Các th hàm sử dụng chung biến toàn cục có thể nằm o ng trong cùng một tập tin hoặc có thể nằm trong du các tập tin khác nhau. u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 10
  11. BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ #include om #include .c int a, b; ng void swap(void); co main() an th { clrscr(); ng printf ("Moi nhap hai so: "); scanf ("%d %d", &a, &b); o swap(); du printf ("Ket qua sap xep hai so: %d %d \n", a, b); u cu getch(); } CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 11
  12. BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ void swap(void) om { .c if (b> a) ng { co auto int temp; an th temp = a; ng a = b; o b = temp; du } u cu } CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 12
  13. BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ  Như vậy, nếu có một biến toàn cục nào đó đã om được khai báo trong một module của chương .c trình, và một hàm trong một module khác lại ng co muốn sử dụng biến này để truyền trị, C đưa ra an cú pháp sau đây: th ng extern kiểu tên_biến_toàn_cục; o du  Khai báo này được đặt đầu module chương u trình chứa hàm sử dụng biến toàn cục. cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 13
  14. BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ  Tương tự cho hàm: om .c extern kiểu tên_hàm ng (danh_sách_khai_báo_đối_số); co  Khai báo này thật sự chỉ là prototype của hàm an th thêm từ khóa extern phía trước. ng o du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 14
  15. BIẾN TĨNH  Để khai báo biến tĩnh ta cần thêm từ khóa static trước om khai báo biến bình thường, cú pháp như sau: .c static kiểu danh_sách_tên_biến; ng co  Biến toàn cục tĩnh là biến khai báo ngoài tất cả các an hàm, trong một module chương trình nào đó và có ý th nghĩa sử dụng bởi các hàm trong cùng module đó. ng Các hàm trong các module khác của chương trình o du không thể sử dụng được. u  Biến cục bộ tĩnh là các biến được khai báo trong hàm cu và chỉ có ý nghĩa sử dụng trong hàm có khai báo đó. CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 15
  16. BIẾN TĨNH  Ví dụ: om static int a; .c main() ng co { an clrscr(); th ... ng } o du int func(void) u { static int b; cu ... } CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 16
  17. BIẾN TĨNH  Nhưng các biến cục bộ tĩnh khác với biến cục om bộ (hay tự động) ở thời gian tồn tại, biến tĩnh .c tồn tại suốt trong bộ nhớ từ lúc nó được sử ng co dụng lần đầu tiên cho đến khi kết thúc chương an trình, và giá trị của chúng không hề mất đi khi ra khỏi hoặc trở vào hàm chứa nó.th o ng du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 17
  18. BIẾN TĨNH  Ví dụ: Xét chương trình tính tổng om .c s = 1 +...+ n ng  dùng hàm trong đó có khai báo biến static. co an th o ng du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 18
  19. BIẾN TĨNH #include om #include .c int tong (int a); ng main() co { int n, i, kq; an th clrscr(); ng printf ("Nhap tri n: "); o scanf ("%d", &n); du for (i = 1; i
  20. BIẾN TĨNH int tong (int a) om { .c static int tam = 0; ng tam += a; co return tam; an th } ng  Trong chương trình trên, trong hàm tong(), ta o du có khai báo một biến cục bộ tĩnh, biến tam, u biến này chỉ được khởi động trị một lần đầu cu chương trình, trị 0, sau đó trị của biến này luôn được giữ lại cho lần sử dụng sau. CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
11=>2