You are on page 1of 13

Tiểu luận:

Con trỏ và mảng động


Xin
Vũ Tuấn Phong 2001230666 chào
Nguyễn Xuân Cương 2001230068 thầy
Nguyễn Hoàng Triều 2001230982 và
Phạm Đặng Gia Thuận 2001230944 các
bạn
Mục lục bài học
Chương 1: Cơ sở dữ liệu.
• 1.1: Khái niệm con trỏ.
• 1.2: Các việc có sử dụng con trỏ.
• 1.3: Các câu lệnh gán của con trỏ.
• 1.4: Con trỏ và mảng một chiều.
• 1.5: Con trỏ và chuỗi.
• 1.6: Mảng động.

Chương 2: Bài tập ví dụ.


1.1: Khái niệm con trỏ.

Con trỏ là một kiểu dữ liệu phức tạp trong lập trình, chứa địa chỉ
của một biến khác.

Được sử dụng trong những trường hợp như


truyền mảng hay string từ một hàm này sang
hàm khác.

Giúp truy cập vào mảng một cách dễ


dàng hơn bằng cách dịch chuyển con
trỏ
Lưu ý:
Đối với con trỏ, chỉ được sử dụng phép cộng với số nguyên hoặc phép trừ
với số nguyên. Vì bản chất, con trỏ trỏ vào địa chỉ của một biến.

Phép cộng Khi thực hiện phép cộng với số nguyên, con
trỏ sẽ được dịch lên

Phép trừ Khi thực hiện phép trừ với số nguyên thì con
trỏ sẽ dịch xuống
1.2: Các việc có sử dụng con trỏ.

Con trỏ được sử dụng để trả về nhiều


hơn một giá trị từ một hàm.

Con trỏ thuận tiện hơn trong việc


truyền các mảng về chuỗi từ 1 hàm
này đến một hàm khác.

Việc sử dụng con trỏ để làm việc với


các phần tử của mảng thay vì truy
câp trực tiếp vào các phần tử đó.
1.3: Các câu lệnh gán của con trỏ.

Gán thông qua toán tử và “&”.


pointer_variable = &variable;

Gán giá trị cho con trỏ thông qua một biến con
trỏ khác trỏ đến phần tử dữ liệu có cùng kiểu.

pointer_variable = &variable;

pointer_variable2 = pointer_variable;
1.3: Các câu lệnh gán của con trỏ.

Gán giá trị NULL bằng số 0


pointer_variable = 0;

Các biến cũng có thể được gán giá trị thông


qua con trỏ của chúng.

*pointer_variable = 10;

Điều quan trọng cần chú ý phải gán giá trị


cho biến con trỏ trước khi sử dụng chúng; nếu
không chúng có thể trỏ đến một giá trị không
xác định nào đó.
1.4: Con trỏ và mảng một chiều.

o Tên của một mảng là một con trỏ Cách khai báo con trỏ
nó là phần tử đầu tiên của mảng đó. nó cũng giống tương tự
mảng một chiều nhưng
o Vậy nếu a[ ] là địa chỉ của phần tử nó chỉ thêm vào kí tự “
* ”, ” & ”, ở trước mỗi
đầu tiên trong mảng đó nó dược
phần tử.
biểu diễn là &a[0] hoặc đơn giản
chỉ là a[ ] hoặc a[ ]+1.

o Tổng quát hóa các phần tử trong


mảng thứ ( i+1 ) được biểu diễn là
&a[i] hoặc a[i]+1.
Ví dụ:

Void NhapMang(int a[ ],int *n){


for (int i =0 ; i < n ; i++ ){
printf ( “a[ %d ] = ”, i );
scanf (“ %d ”, &a[i] );
}
}
1.5: Con trỏ và chuỗi.

Con trỏ trong chuỗi thực ra là một loại mảng và chúng ta


cũng có thể sử dụng con trỏ để lưu trữ địa chỉ bộ nhớ của
chuỗi và qua đó thao tác với chúng một cách dễ dàng hơn.

Sử dụng con trỏ trong chuỗi giúp chúng ta có thể


khai báo và xử lý chuỗi trực tiếp hoặc gián tiếp , qua đó nâng
cao việc sử dụng hiệu quả bộ nhớ và giảm thời gian thực thi
hàm.

Khai báo con trỏ trong chuỗi cũng tương tự như chuỗi bình
thường nhưng có thêm kí tự “ * ” trước mỗi tên của nó .
Ví dụ:

Char ten[50] = ”Nguyen van A”, *a;


*a = ten;

Trong đó :
*a là tên của con trỏ.
*a = ten là “ Nguyen van A “
sẽ hiểu gắn bằng *a.

You might also like