Tài liệu TIN HỌC CƠ SỞ 2: DỮ LIỆU KIỂU CON TRỎ NÂNG CAO - Pdf 91

Trường Đại học Khoa học Tự nhiên
Khoa Công nghệ thông tin
Bộ môn Tin học cơ sở
1
Đặng Bình Phương
[email protected]
TIN HỌC CƠ SỞ 2
DỮ LIỆU KIỂU CON TRỎ
NÂNG CAO
VC
VC
&
&
BB
BB
22
Nội dung
Tin học cơ sở 2 - Đặng Bình Phương
Con trỏ cấp 21
Con trỏ và mảng nhiều chiều2
Mảng con trỏ3
Con trỏ hàm4
VC
VC
&
&
BB
BB
33
Con trỏ cấp 2 (con trỏ đến con trỏ)


int nCapPhat
……
18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25
int *p
N
N
U
U
L
L
L
L
N
N
U
U
L
L
L
L
2
02
02
00
00
00
00
00
00
int n

p = (int *)malloc(n * sizeof(int));
}
VC
VC
&
&
BB
BB
66
Con trỏ cấp 2

Giải pháp

Sử dụng con trỏ p trỏ đến con trỏ a này. Hàm
sẽ thay đổi giá trị của con trỏ â gián tiếp
thông qua con trỏ p.
Tin học cơ sở 2 - Đặng Bình Phương
void CapPhat(int **p, int n)
{
*p = (int *)malloc(n * sizeof(int));
}
void main()
{
int *a = NULL;
CapPhat(&a, 4);
}
VC
VC
&
&

L
L
2
02
02
00
00
00
00
00
00
int n
22
22
00
00
00
00
00
00
VC
VC
&
&
BB
BB
88
Con trỏ cấp 2

Lưu ý

1
2
0 1 2 3
a
int[4]
VC
VC
&
&
BB
BB
1010
Con trỏ và mảng 2 chiều

Hướng tiếp cận 1

Các phần tử tạo thành mảng 1 chiều

Sử dụng con trỏ int * để duyệt mảng 1 chiều
Tin học cơ sở 2 - Đặng Bình Phương
0 1 2 3 4 7 85 6 9
int a[3][4]
10 11
int *p = (int *)a
+1
VC
VC
&
&
BB

2 chiều
Tin học cơ sở 2 - Đặng Bình Phương
0
1
2
0 1 2 3 4 7 85 6 9
a
CxD
10 11
(d, c)  i ?
i  (d, c) ?
i = d*C + c
d = i / C
c = i % C
VC
VC
&
&
BB
BB
1313
Hướng tiếp cận 1

Nhập / Xuất theo chỉ số mảng 2 chiều
Tin học cơ sở 2 - Đặng Bình Phương
int a[D][C], i, d, c;
int *p = (int *)a;
for (i = 0; i < D*C; i++)
{
printf(“Nhap a[%d][%d]: ”, i / C, i % C);

a[0]
VC
VC
&
&
BB
BB
1515

Kích thước của mảng
void main()
{
int a[3][4];
printf(“KT của a = %d”, sizeof(a));
printf(“KT của a[0] = %d”, sizeof(a[0]));
printf(“KT của a[0][0] = %d”, sizeof(a[0][0]));
}
0 1 2
0 1 2 3
Hướng tiếp cận 2
Tin học cơ sở 2 - Đặng Bình Phương
a
a[0]
a[0][0]
VC
VC
&
&
BB
BB

Truyền địa chỉ phần tử đầu tiên cho hàm.

Khai báo con trỏ rồi gán địa chỉ mảng cho con
trỏ này để nó trỏ đến mảng.

Con trỏ này phải cùng kiểu với biến mảng, tức
là con trỏ đến vùng nhớ n phần tử (mảng)

Cú pháp

Ví dụ
Tin học cơ sở 2 - Đặng Bình Phương
<kiểu dữ liệu> (*<tên con trỏ>)[<số phần tử];
int (*ptr)[4];


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status