CHƯƠNG: MANG - CON TRO - THAM CHIEU Khoa Céng Nghé Thong Tin & Truyén Théng Đại Học Cần Thơ... a Chuong 5 Mang, Con Tro, Tham Chiều # Muc tiéu Giới thiệu các cách sử dụng mảng, co
Trang 1CHƯƠNG:
MANG - CON TRO -
THAM CHIEU
Khoa Céng Nghé Thong Tin & Truyén Théng
Đại Học Cần Thơ
Trang 2a Chuong 5
Mang, Con Tro, Tham Chiều
# Muc tiéu
Giới thiệu các cách sử dụng mảng, con trỏ, và tham chiêu
= Noi dung
Mang một chiều, nhiều chiều, bộ nhớ tinh
Con trỏ, tính toán con trỏ, bộ nhớ động
Con trỏ hàm, tham chiều
Trang 3"
>
Mang
= Mang (array)
Gom mot tap cac đối tượng cùng kiểu và được sắp xếp liên tiếp trong bộ nhớ
Mỗi phân tử mảng được xác định bởi một chỉ số biểu thị vị trí của phân tử trong mảng
= Phân tử đâu tiên của mảng luôn có chỉ số 0
Số lượng phân tử trong mang được gọi là kích thước của mảng (cô định; xác định trước)
Gồm mảng một chiều và mảng đa chiêu
Trang 4"
ak >
Bien Mang
= Duoc dinh nghia bang cach dac ta kích
thước mảng và kiêu các phan tử của no
m Truy xuất 1 phân tử qua chỉ số mảng
Vi du: heights[O]= 210; cout<< heights[3];
m Truy xuât phân tử không tôn tại > Idi Vượt ngoài biên
4
Trang 5a Chuong 5
Bo Khoi Tao Mang
= Moi mang có một bộ khởi tạo mảng
a Vi du
int nums[3] = {5, 10}: int nums[ ] = {5, 10, 15}: mang ?
m Chuỗi là một mảng ký tự
m Ví dụ: so sánh sự khác nhau của
char str[] = "HELLO"; va char str[]={H,E,L,L, O}
5
Trang 6a Chuong 5
Mang Da Chiéu
Mua he Mua thu | Mùa đông
I L ⁄
| , \ if 1 ⁄ |
i \ \ ` / \ # ⁄
` / { 4
Brisbane 4£ ` | /3%\ l 2h 4 2
{ >=s i >> —\ + > 7“ I x
XS i Sw / `
Ị NA 7 “A we Ị ¬
I SAL 7 \ fos I `
Ị ` Vx x SQ I `
! ) ne / ` ZẮ ` 1 \
] my XS 4 oN "XS / \ ` I `
i * ¬ \ yr À NI aN
I i ` ứ SSS \ / NG \ Ị SN
I / \ ` / ` ` SN
` ` ` `
I f v x ` \ ` I ` SN
} / IN ™ XS NÓI SS `
I i CN “\ ` SC] N N
I / / \ ⁄ \ mà Ts ` `
I i / ` 7 ⁄ \ \ ` ~ l ^x ` ` ` ` `
I 7 ` \ ` I ` ` `
1 ` \ SA I SK ` `
| \ SA ` ` `
` ` `
Ị Wy ` `
] ] `
Cách tổ chức trong bộ nhớ
hang dau
6
Trang 7a Chuong 5
Con Tro
# Con trỏ đơn giản chỉ là địa chỉ của một VỊ
trí bộ nhớ và cung cập cách gián tiêp để
truy xuât dữ liệu trong bộ nhớ
it num = 10; num
int *ptri = # =e
cout << *ptr1;
v
10 1000
†
1000 | 2000
Trang 8
a Chuong 5
Bộ Nhớ Động - Tĩnh
# Bộ nhớ động (heap)
Vùng nhớ được cấp phát động trong thời gian thực thi
# BỘ nhớ tính (stack)
Vùng nhớ được sử dụng đề lưu trữ các biên toàn cục
và lời gọi hàm
= Hai toan tu được sử dụng
{
char *str = new char[10];
HM
delete ptr;
delete [ |str;
Trang 9a Chuong 5
Tham Chiéu
= Mét tham chiéu (reference) la mét biệt
hiéu (alias) cho mot doi tượng
# Vị dụ
double num1 = 3 14; num1L 3.14 1000
double &num2 = num1; num2
# Ch¡ chú
Một tham chiều phải luôn được khởi tạo khi nó được
định nghĩa
Có thê khởi tạo tham chiêu tới một hằng
Trang 10
Truyén Bang Tri - Con Tré - Tham
Chiéu
he FOwWw
13
14
15
16
17
18
// Truyén bang trị (đối tượng)
void Swapl (int x, int y)
int temp = x;
X = Vr
y = temp;
// Truyền bằng địa chỉ (con trỏ)
void Swap2 (int *x, int *y)
{
int temp = *x;
*y = temp;
} // Truyền bằng tham chiếu
void Swap3 (int &x, int &y)
int temp = x;
X = Vr
y = temp;
int main (void)
{
inti = 10, j = 20;
Swap2(&i, &j); cout << i <<", "<< j << n;
Swap3(i, j); | cout <<i <<", "<<j <<‘\n';
}
10