PHƯƠNG PHÁP LẬP TRÌNH_5 - Pdf 15

CHƯƠNG 5CHƯƠNG 5
CON TRỎCON TRỎ
(Pointers)(Pointers)
(Pointers)(Pointers)
1. Giớithiệu1. Giớithiệu
1.

Giới

thiệu1.

Giới

thiệu
y Mộtcontrỏ là 1biếnchứamột địachỉ bộ
nhớ. Địachỉ này là vị trí củamột đốitượn
g
khác trong bộ nhớ.
y Nếumộtbiếnchứa địachỉ củamộtbiếnkhác,
biếnthứ nhất đượcgọilàtrỏđếnbiếnthứ hai.
1. Giớithiệu1. Giớithiệu
1.

Giới

thiệu1.

Giới

thiệu
Đ

n con trn con tr
ỏỏ
2. Khai báo bi2. Khai báo bi
ếế
n con trn con tr
ỏỏ
y Cú pháp:
type *pointerVariable;
type
:xácđịnh kiểudữ liệucủabiếnmà
type
:

xác

định

kiểu

dữ

liệu

của

biến



con trỏ trỏ đến.

y
Toán tử &
là toán tử 1 ngôi, trả về địa chỉ bộ
nhớ của toán hạn
g
của nó.
◦ Toán tử & dùng để gán địa chỉ của biến cho
biến con trỏ

p

p
:
pp
<Tên biến con trỏ>=&<Tên biến>
3. Toán t3. Toán t
ửử
con trcon tr
ỏỏ
((
pointer operatorspointer operators
))
3. Toán t3. Toán t
ửử
con trcon tr
ỏỏ
((
pointer operatorspointer operators
))
y

y
Toán tử *
: là toán tử một ngôi trả về giá trị
tại địa chỉ con trỏ trỏ đến.
Cú pháp
:
*<Tên biến con trỏ>
V
í d

:
a=*
p

;

p;
4. Các thao tác trên con trỏ4. Các thao tác trên con trỏ
4.

Các

thao

tác

trên

con


nh trên đư

c th

c hi

n
,
cả
ọ ệ ợ ự ệ ,
hai p1 và p2 cùng trỏ đến biến x.
4. Các thao tác trên con trỏ4. Các thao tác trên con trỏ
4.

Các

thao

tác

trên

con

trỏ4.

Các

thao


liệ

ó
thướ
cc

a
kiể
u
dữ
liệ
uc

an
ó
.
4. Các thao tác trên con trỏ4. Các thao tác trên con trỏ
4.

Các

thao

tác

trên

con

trỏ4.

.
Cộng các con trỏ với một số nguyên:
1// ỏ dời đi1b
a = a +
1
;
//
con tr

a
dời

đi

1

b
yte
b = b + 1;//con trỏ b dời đi 2 byte
c = c + 1; //con trỏ cdời đi4byte
c

=

c

+

1;


thao

tác

trên

con

trỏ
4. Các thao tác trên con trỏ4. Các thao tác trên con trỏ
4.

Các

thao

tác

trên

con

trỏ4.

Các

thao

tác


chỉ
ô
nhớ


trỏ
tới
chứ không phảilàgiátrị trỏ tới).
4. Các thao tác trên con trỏ4. Các thao tác trên con trỏ
4.

Các

thao

tác

trên

con

trỏ4.

Các

thao

tác

trên

tác

trên

con

trỏ4.

Các

thao

tác

trên

con

trỏ
#include <iostream.h>
#include<conio h>
#include<conio
.
h>
void main ()
{
int a = 20, b = 15, *pa, *pb, temp;
pa = &a; // con trỏ pa chứa địa chỉ của a
pb
=

cout << "a = " << a << endl;
cout << “b = ” << b;
m
à
n

n
h
a = 15
b
=
20
}
b

20
5. Cấpphátbộ nhớ động5. Cấpphátbộ nhớ động
5.

Cấp

phát

bộ

nhớ

động5.

Cấp

n
h
c
ó
t
hể

n
h
đ
ượct

m
bộ
n
hớ
trong khi đang thựcthi,giảiphóngbộ nhớ khi
không
cần
thiết
không
cần
thiết
y C/C++ hổ trợ hai hệ thống cấpphátđộng:
một
hệ
thống
được
định
nghĩa

phát

bộ

nhớ

động
y Cấpphátđộng được định nghĩabởiC

Vùng nhớ Heap
đượcsử dụng cho việccấp
phát động các khốibộ nhớ trong thờigian
thựcthichươn
g
trình. Gọilàbộ nhớđộn
g
.


m
malloc
()

free
()
dùn
g
đ

cấ

động
y Hàm malloc(): cấp phát bộ nhớ động.
ủ hà ó d
−Prototype c

a

m c
ó

d
ạn
g
void *malloc(length)
length
:

số
byte
muốn
cấp
phát

length
:

số
byte
muốn
cấp

tiên
của
vùng
nhớđượccấppháttừ heap. Nếu không
thành côn
g
(
khôn
g
có đủ vùn
g
nhớ rỗi
y
êu
g
(g
g
y
cầu), hàm malloc() trả về null.
5. Cấpphátbộ nhớ động5. Cấpphátbộ nhớ động
5.

Cấp

phát

bộ

nhớ



phát

bộ

nhớ

động5.

Cấp

phát

bộ

nhớ

động
y Ví dụ:
int *p;
p
=
(
int *
)
malloc
(
50*sizeof
(
int


bộ

nhớ

động
y Kích thướccủaheapkhôngxácđịnh nên khi

cấpphátbộ nhớ phảiki

mtra
g
iá trị trả về
củahàmmalloc()để biếtlàbộ nhớ có được
cấp
phát
thành
công
hay
không
cấp
phát
thành
công
hay
không
.
Ví dụ:
p = (int *)malloc(100);
p

bộ

nhớ

động
y Hàm free(): Trả về vùng nhớ được cấp phát
bởi hàm malloc().
y Cú pháp:
v
oid free(void *p);
p là con trỏ đến vùng nhớ đã được cấp phát
trước đó bởi hàm malloc().
5. Cấpphátbộ nhớ động5. Cấpphátbộ nhớ động
5.

Cấp

phát

bộ

nhớ

động5.

Cấp

phát

bộ

phát trước đóbởitoántử new.
5. Cấpphátbộ nhớ động5. Cấpphátbộ nhớ động
5.

Cấp

phát

bộ

nhớ

động5.

Cấp

phát

bộ

nhớ

động
y Cú pháp:
p = new type;
delete
p
;
p
y plàmộtbiếncontrỏ nhận địachỉ của vùng


nhớ

động
y Ví dụ:
#incl de <iost eam h>
#incl
u
de

<iost
r
eam
.
h>
#include <new>
int main
()
()
{
int *p;
it// ll t f it
p = new
i
n
t
;
//
a
ll

delete p;
t0
re
t
urn
0
;
}
6. Con trỏ6. Con trỏ
voidvoid
((
void pointersvoid pointers
))
6.

Con

trỏ

6.

Con

trỏ

voidvoid
((
void

pointersvoid


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