Tải bản đầy đủ (.ppt) (23 trang)

LỚP LƯU TRỮ CỦA BIẾN VÀ SỰ CHUYỂN KIỂU TRONG C - CHƯƠNG 7 pps

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (290.72 KB, 23 trang )

Giảng viên: Nguyễn Đức Hoàng
Bộ môn Điều Khiển Tự Động
Khoa Điện – Điện Tử
Đại Học Bách Khoa Tp.HCM
Email:
MÔN HỌC
MÔN HỌC
Nội dung môn học (10
Nội dung môn học (10
chương)
chương)
(14 tuần = 28 tiết LT + 14 tiết BT)
(14 tuần = 28 tiết LT + 14 tiết BT)
Chương 1: Ôn lại các kiến thức cơ bản về máy tính
Chương 2: Các kiểu dữ liệu và thao tác
Chương 3: Giới thiệu ngôn ngữ lập trình C
Chương 4: Các thành phần cơ bản và kiểu dữ liệu của
C
Chương 5: Các lệnh điều khiển và vòng lặp
Chương 6: Hàm
Chương 7: Lớp lưu trữ của biến - Sự chuyển kiểu
Chương 8: Mảng
Chương 9: Pointer
Chương 10: Kiểu dữ liệu có cấu trúc và kiểu tự định
nghĩa
Tài liệu tham khảo
Tài liệu tham khảo
Tài liệu:
Tài liệu:
Tin Học 2
Tin Học 2




Đặng Thành Tín
Đặng Thành Tín
Kỹ Thuật Lập Trình C
Kỹ Thuật Lập Trình C


GS. Phạm Văn Ất
GS. Phạm Văn Ất
Giáo Trình C
Giáo Trình C


Nguyễn Hữu Tuấn
Nguyễn Hữu Tuấn
Giáo trình BT Kỹ thuật lập trình
Giáo trình BT Kỹ thuật lập trình
C
C
Đánh giá
Đánh giá
Thi giữa kỳ : 20%
Thi cuối kỳ : 80%
LỚP LƯU TRỮ CỦA BiẾN
LỚP LƯU TRỮ CỦA BiẾN
SỰ CHUYỂN KiỂU
SỰ CHUYỂN KiỂU
CHƯƠNG 7
CHƯƠNG 7

Nội dung chương 7
Nội dung chương 7
7.1 Khái niệm
7.2 Biến toàn cục và biến cục bộ
7.3 Biến tĩnh
7.4 Biến Register
7.5 Khởi động trị cho biến ở các lớp
7.6 Sự chuyển kiểu
Khái niệm
Khái niệm
Khái niệm
Khái niệm
Mỗi biến khi sử dụng trong chương trình cần phải
khai báo. Nó có thể được khai báo ngoài hàm, trong
hàm,… tạo nên các lớp lưu trữ của biến:
- Lớp biến tự động
-
Lớp biến toàn cục và biến cục bộ
-
Lớp biến tĩnh
-
Lớp biến thanh ghi
Khái niệm
Khái niệm
Có 2 đặc tính quan trọng của một biến:
-
Tầm sử dụng của biến: là nơi biến có thể được sử
dụng trong các lệnh của chương trình → lớp lưu trữ
biến toàn cục và lớp lưu trữ biến cục bộ
-

Thời gian tồn tại của biến: xác định rằng biến với giá
trị đang tồn tại trong nó có ý nghĩa đến lúc nào → lớp
biến tự động và lớp biến tĩnh
Khái niệm
Khái niệm
Biến toàn cục và biến cục bộ
Biến toàn cục và biến cục bộ
Biến cục bộ
Biến cục bộ
-Biến cục bộ hay biến tự động (auto): các biến được
khai báo ngay sau cặp dấu {} hoặc các biến được khai
báo trong danh sách đối số của hàm
Cú pháp: [auto] kieu ds_tb;
VD:
main()
{ int i = 1;
{ auto int j; }
}
Biến cục bộ
Biến cục bộ
- Biến cục bộ chỉ có thể sử dụng trong phần chương
trình mà nó được khai báo → chỉ có các lệnh bên
trong thân hàm hoặc khối lệnh mà biến được khai
báo mới được sử dụng nó mà thôi
-
Khi gặp khai báo biến cục bộ, C sẽ cấp chỗ cho các
biến này trong vùng nhớ stack, khi khối lệnh hoặc
hàm được sử dụng xong, các biến trong vùng nhớ
stack này tự giải phóng
-

Đối với hàm cũng tương tự
#include <stdio.h>
main()
{
double a,b;
double tong(double,double);
a=1.4,b=2.6;
{
double c;
c=tong(a,b);
}
printf("Tong = %lf\n",c); /* lỗi */
}
double tong(double a, double b)
{
return (a+b);
}
Biến toàn cục
Biến toàn cục
Biến toàn cục hay biến ngoài là biến được khai báo
ngoài tất cả các hàm
Biến này có thể được sử dụng để liên kết trị giữa các
hàm khác nhau
VD:
int i = 1;
main()
{
}
Biến toàn cục
Biến toàn cục

- Tầm sử dụng của biến toàn cục là toàn bộ chương
trình, nghĩa là biến toàn cục có thể sử dụng trong tất
cả các hàm (nếu trong hàm không có biến cục bộ
trùng tên)
- Các biến toàn cục sau khi khai báo sẽ được C cấp
vùng nhớ riêng. Vùng nhớ cung cấp cho biến toàn cục
sẽ được dành riêng cho biến trong suốt thời gian
chương trình thực thi → giá trị của biến không bị mất
trong suốt quá trình làm việc
#include "stdio.h"
void hoanvi(void);
double a,b;
main()
{
printf("\nMoi nhap 2 so:");
scanf("%lf%lf",&a,&b);
printf("\nHoan vi %5.2lf va %5.2lf :",a,b);
hoanvi();
printf("%5.2lf, %5.2lf\n",a,b);
}
void hoanvi(void)
{
double c;
c=a;
a=b;
b=c;
}
#include <stdio.h>
int a=2;
main()

{
int a,b;
a=1,b=2;
printf("%d\n",a+b);
}
Biến tĩnh
Biến tĩnh
Cú pháp: static kieu ds_tb;
-
Biến toàn cục tĩnh: biến khai báo ngoài tất cả các
hàm, trong một module chương trình và chỉ có ý nghĩa
sử dụng bởi các hàm trong cùng module đó mà thôi
-
Biến cục bộ tĩnh: biến được khai báo trong hàm và
chỉ có ý nghĩa trong hàm đó mà thôi. Nó khác với biến
tự động ở thời gian tồn tại, biến tĩnh tồn tại suốt trong
bộ nhớ từ lúc nó được sử dụng lần đầu cho đến kết
thúc chương trình và giá trị của nó không mất đi khi
ra khỏi hay trở về hàm chứa nó
#include <stdio.h>
double tong(double,double);
main()
{
double a,b;
a=1.4,b=2.6;
printf("Tong = %lf\n",tong(a,b));
printf("Tong = %lf\n",tong(a,b));
}
double tong(double a,double b)
{

static double c;
return (c+=a+b);
}
Biến Register
Biến Register
C cho phép lập trình viên sử dụng một số thanh ghi
của bộ vi xử lý để khai báo biến → biến thanh ghi
(register)
Cú pháp: register kieu ds_tb;
kieu: int, char, unsigned, long, pointer
Khai báo biến thanh ghi chỉ có thể được đặt bên trong
một hàm hoặc khối lệnh.
Tầm sử dụng và thời gian tồn tại giống như biến cục
bộ nhưng chúng truy xuất nhanh hơn biến cục bộ
Khởi động trị cho biến
Khởi động trị cho biến
-
Đối với biến toàn cục và biến tĩnh: ngay sau khi khai
báo mỗi biến sẽ được C gán giá trị bằng 0 và chỉ được
khởi động trị một lần. Sau lần đầu lệnh khai báo được
thực hiện, C bỏ qua lệnh này trong những lần gọi hàm
sau
-
Biến tự động và biến thanh ghi: sẽ có trị không xác
định do lập trình viên gán. Lệnh khai báo sẽ được thực
hiện mỗi lần hàm hay khối lệnh được gọi sử dụng
Sự chuyển kiểu
Sự chuyển kiểu
Khi thực hiện các phép toán số học hay luận lý C luôn
thực hiện sự chuyển kiểu tự động

Ngoài ra, C cho phép lập trình viên thực hiện sự
chuyển kiểu bắt buộc
Cú pháp: (kieu) gia_tri;
VD:
int a=2, b=3;
double c, d;
c = a/b;
d = (double)a/b;

×