Chương trình dịch sẽ cấp phát cho biến đó một số ô nhớ liên. tiếp đủ để chứa nội dung của biến[r]
(1)TIN HỌC ĐẠI CƯƠNG
TIN HỌC ĐẠI CƯƠNG
PHẦN 2: LẬP TRÌNH BẰNG NGƠN NGỮ C PHẦN 2: LẬP TRÌNH BẰNG NGƠN NGỮ C
BÀI 4:
BÀI 4: CON TRỎ VÀ MẢNGCON TRỎ VÀ MẢNG
VI N Ệ VI N Ệ
CÔNG NGH Ệ
CÔNG NGH Ệ
THÔNG TIN
THÔNG TIN
SCHOOL OF SCHOOL OF
(2)4
4.1 .1 Con trỏ địa chỉCon trỏ địa chỉ
4.1.1 Tổng quan trỏ4.1.1 Tổng quan trỏ
4.1.2 Các phép toán làm việc với trỏ4.1.2 Các phép toán làm việc với trỏ
4.2 Mảng
4.2 Mảng
4.2.1 Khái niệm mảng4.2.1 Khái niệm mảng
4.2.2 Khai báo sử dụng mảng4.2.2 Khai báo sử dụng mảng
4.2.3 Các thao tác làm việc mảng4.2.3 Các thao tác làm việc mảng
4.3 Sử dụng trỏ làm việc với mảng
(3)4.1.1 Tổng quan trỏ a Địa giá trị biến
a Địa giá trị biến
Bộ nhớ dãy byte nhớ.Bộ nhớ dãy byte nhớ
Các byte nhớ xác định cách qua Các byte nhớ xác định cách qua
một địa chỉđịa chỉ
Biến lưu nhớ.Biến lưu nhớ Khi khai báo biếnKhi khai báo biến
Chương trình dịch cấp phát cho biến số nhớ liên
Chương trình dịch cấp phát cho biến số nhớ liên
tiếp đủ để chứa nội dung biến Ví dụ biến số nguyên
tiếp đủ để chứa nội dung biến Ví dụ biến số nguyên
(int) cấp phát byte
(int) cấp phát byte
Địa biến địa byte
Địa biến địa byte
số
(4) Một biến ln có hai đặc tính:Một biến ln có hai đặc tính:
Địa biến
Địa biến
Giá trị biến
Giá trị biến
Ví dụ:Ví dụ:
int i, j; int i, j; i = 3;
i = 3;
j = i + 1; j = i + 1;
Biến Địa Giá trị
i FFEC 3
(5)4.1.1
4.1.1 Tổng quan trỏTổng quan trỏ b Khái niệm khai báo trỏ
b Khái niệm khai báo trỏ
Con trỏ biến mà giá trị địa Con trỏ biến mà giá trị địa vùng nhớ
một vùng nhớ
Khai báo trỏ:Khai báo trỏ:
Cú pháp khai báo trỏ sau:
Cú pháp khai báo trỏ sau:
Kieu_du_lieu *ten_bien_con_tro;
Kieu_du_lieu *ten_bien_con_tro;
Ví dụVí dụ
int i = 3; int i = 3; int *p;
int *p; p = &i; p = &i;
p a
Bi nế Đ a chị ỉ Giá trị
i FFEC
(6) Toán tử Toán tử &&: Trả địa biến.: Trả địa biến
Toán tử Toán tử **: Trả giá trị chứa vùng nhớ : Trả giá trị chứa vùng nhớ trỏ giá trị biến trỏ
trỏ giá trị biến trỏ
Cả hai toán tử * & có độ ưu tiên cao tất Cả hai tốn tử * & có độ ưu tiên cao tất toán tử số học ngoại trừ toán tử đảo dấu
toán tử số học ngoại trừ tốn tử đảo dấu
Ví dụ:Ví dụ:
void main() void main()
{ {
int i = 3; int *p;int i = 3; int *p;
p = &i;p = &i;
printf("*p = %d \n",*p);printf("*p = %d \n",*p);
(7)4.1.1
4.1.1 Tổng quan trỏTổng quan trỏ
c Sử dụng biến trỏ:
c Sử dụng biến trỏ:
Một biến trỏ gán bởi:Một biến trỏ gán bởi:
Địa biến khác:
Địa biến khác:
ten_bien_con_tro = &ten_bien;ten_bien_con_tro = &ten_bien;
Giá trị trỏ khác (tốt kiểu):
Giá trị trỏ khác (tốt kiểu): ten_bien_con_tro2 = ten_bien_con_tro1;ten_bien_con_tro2 = ten_bien_con_tro1;
Giá trị NULL (số 0):
Giá trị NULL (số 0):
ten_bien_con_tro = 0;ten_bien_con_tro = 0;
(8)main()
main()
{
{
int i = 3, j = 6;int i = 3, j = 6;
int *p1, *p2;int *p1, *p2;
p1 = &i;p1 = &i;
p2 = &j;p2 = &j;
*p1 = *p2;*p1 = *p2; }
(9)4.1.1
4.1.1 Tổng quan trỏTổng quan trỏ
Ví dụ 2: Ví dụ 2:
main()
main()
{
{
int i = 3, j = 6;int i = 3, j = 6;
int *p1, *p2;int *p1, *p2;
p1 = &i;p1 = &i;
p2 = &j;p2 = &j;
p1 = p2;p1 = p2; }
(10) void *ten_bien_con_tro;void *ten_bien_con_tro; Con trỏ đặc biệt, khơng có kiểu, Con trỏ đặc biệt, khơng có kiểu,
Có thể nhận giá trị địa biến Có thể nhận giá trị địa biến
thuộc kiểu liệu
thuộc kiểu liệu
Ví dụ:Ví dụ:
void *p, *q;
void *p, *q;
int x = 21;
int x = 21;
float y = 34.34;
float y = 34.34;
p = &x; q = &y;