
1
11
TIN HỌC ĐẠI CƯƠNGTIN HỌC ĐẠI CƯƠNG
PHẦN 2: LẬP TRÌNH BẰNG NGÔN NGỮ CPHẦ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 CÔNG NGHỆ VIỆN CÔNG NGHỆ
THÔNG TIN & THÔNG TIN &
TRUYỀN THÔNG TRUYỀN THÔNG
SOICTSOICT
22
BÀI 4:BÀI 4: CON TRỎ VÀ MẢNG CON TRỎ VÀ MẢNG
4.1. Con trỏ và địa chỉ
4.1.1. Tổng quan về con trỏ
4.2. Mảng
4.2.1. Khái niệm mảng
4.2.2. Khai báo và sử dụng mảng
4.2.3. Các thao tác cơ bản làm việc trên mảng
4.3. Sử dụng con trỏ làm việc với mảng

2
33
4.1.1. Tổng quan về con trỏ
a. Địa chỉ và giá trị của một biếna. Địa chỉ và giá trị của một biến
Bộ nhớ như một dãy các byte nhớ.Bộ nhớ như một dãy các byte nhớ.
Các byte nhớ được xác định một cách duy nhất qua Các byte nhớ được xác định một cách duy nhất qua
một một địa chỉđịa chỉ. .
Biến được lưu trong bộ nhớ.Biến được lưu trong bộ nhớ.
Khi khai báo một biếnKhi khai báo một biến
CChương trình dịch sẽ cấp phát cho biến đó một số ô nhớ liên hươ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. Ví dụ một biến số nguyên tiếp đủ để chứa nội dung của biến. Ví dụ một biến số nguyên
(int) được cấp phát 2 byte.(int) được cấp phát 2 byte.
Địa chỉ của một biến chính là địa chỉ của byte đầu tiên trong Địa chỉ của một biến chính là địa chỉ của byte đầu tiên trong
số đó. số đó.
44
4.1.1. Tổng quan về con trỏ
a. Địa chỉ và giá trị của một biến (tiếp)a. Địa chỉ và giá trị của một biến (tiếp)
Một biến luôn có hai đặc tính:Một biến luôn có hai đặc tính:
Địa chỉ của biến.Địa chỉ của biến.
Giá trị của biến.Giá trị của 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 chỉ Giá trị
iFFEC 3
jFFEE 4

3
55
4.1.1. Tổng quan về con trỏ
b. Khái niệm và khai báo con trỏb. Khái niệm và khai báo con trỏ
Con trỏ là một biến mà giá trị của nó là địa chỉ của Con trỏ là một biến mà giá trị của nó là địa chỉ của
một vùng nhớ.một vùng nhớ.
Khai báo con trỏ:Khai báo con trỏ:
Cú pháp khai báo một con trỏ như sau:Cú pháp khai báo một con trỏ như 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;
Một con trỏ chỉ có thể trỏ tới một đối tượng cùng kiểu.Một con trỏ chỉ có thể trỏ tới một đối tượng cùng kiểu.
Biến Địa chỉ Giá trị
iFFEC 3
pFFEE FFEC
66
BÀI 4:BÀI 4: CON TRỎ VÀ MẢNG CON TRỎ VÀ MẢNG
4.1. Con trỏ và địa chỉ
4.1.1. Tổng quan về con trỏ
4.2. Mảng
4.2.1. Khái niệm mảng
4.2.2. Khai báo và sử dụng mảng
4.2.3. Các thao tác cơ bản làm việc trên mảng
4.3. Sử dụng con trỏ làm việc với mảng

4
77
4.2.1. Khái niệm mảng4.2.1. Khái niệm mảng
Mảng là một tập hợp Mảng là một tập hợp hữu hạnhữu hạn
các phần tử có các phần tử có cùng kiểu dữ cùng kiểu dữ
liệuliệu được lưu trữ được lưu trữ liên tiếpliên tiếp nhau nhau
trong bộ nhớtrong bộ nhớ..
Các phần tử trong mảng có Các phần tử trong mảng có cùng cùng
têntên (và cũng là tên mảng) nhưng (và cũng là tên mảng) nhưng
phân biệt với nhau ở phân biệt với nhau ở chỉ sốchỉ số cho cho
biết vị trí của chúng trong mảngbiết vị trí của chúng trong mảng ..
c[ 6]
- 45
6
0
72
1543
- 89
0
62
- 3
1
6453
78
c[ 0]
c[ 1]
c[ 2]
c[ 3]
c[ 11]
c[ 10]
c[ 9]
c[ 8]
c[ 7]
c[ 5]
c[ 4]
88
4.2.2. Khai báo và sử dụng mảng4.2.2. Khai báo và sử dụng mảng
a. Khai báo:a. Khai báo:
Cú pháp:Cú pháp:
Kieu_du_lieu ten_mang[kich_thuoc_mang];Kieu_du_lieu ten_mang[kich_thuoc_mang];
nn phần tử của mảng c:phần tử của mảng c:
c[ 0 ] , c[ 1 ] , . . . , c[ n c[ 0 ] , c[ 1 ] , . . . , c[ n –– 1 ]1 ]
Ví dụ: Câu lệnh: Ví dụ: Câu lệnh:
char c[12];char c[12];
Khai báo một mảng:Khai báo một mảng:
Tên là c, có 12 phần tử,Tên là c, có 12 phần tử,
Các phần tử thuộc kiểu charCác phần tử thuộc kiểu char
c[ 6]
- 45
6
0
72
1543
- 89
0
62
- 3
1
6453
78
c[ 0]
c[ 1]
c[ 2]
c[ 3]
c[ 11]
c[ 10]
c[ 9]
c[ 8]
c[ 7]
c[ 5]
c[ 4]

5
99
4.2.2. Khai báo và sử dụng mảng4.2.2. Khai báo và sử dụng mảng
a. a. KhaiKhai báobáo ((tiếptiếp):):
MảngMảng HaiHai chiềuchiều::
MỗiMỗi phầnphần tửtử củacủa mảngmảng cũngcũng làlà mộtmột mảngmảng kháckhác
CúCú pháppháp khaikhai báobáo mảngmảng 2 2 chiềuchiều::
Kiểu_dữ_liệuKiểu_dữ_liệu tên_mảngtên_mảng[[số_hàngsố_hàng][][số_cộtsố_cột];];
VíVí dụdụ::
intint a[6][5];a[6][5];
MảngMảng nhiềunhiều chiềuchiều::
VdVd: : intint b[3][4][5];b[3][4][5];
1010
4.2.2. Khai báo và sử dụng mảng4.2.2. Khai báo và sử dụng mảng
b. Sử dụng mảng:b. Sử dụng mảng:
Truy cập vào 1 phần tử của mảng thông qua Truy cập vào 1 phần tử của mảng thông qua
tên mảng và chỉ số của phần tử đó.tên mảng và chỉ số của phần tử đó.
Cú pháp: Cú pháp:
ten_mangten_mang[[chi_so_cua_phan_tuchi_so_cua_phan_tu]]
Ví dụ 1: Ví dụ 1: int mang_nguyen[3];int mang_nguyen[3];
mang_nguyen[0]mang_nguyen[0]:: Phần tử thứ 1.Phần tử thứ 1.
mang_nguyen[1]mang_nguyen[1]:: Phần tử thứ 2.Phần tử thứ 2.
mang_nguyen[2]mang_nguyen[2]:: Phần tử thứ 3.Phần tử thứ 3.

