Tải bản đầy đủ (.pptx) (22 trang)

Bài giảng lập trình c nâng cao chương 3 lập trình con trỏ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (379.76 KB, 22 trang )

TRẦN MINH THÁI


Cập nhật: 02 tháng 04 năm 2015
Chương 3. Lập trình con trỏ
#2
Nội dung



 !"#$
 
% &
#3
Biến tĩnh và biến động
'()*"+"  
%'*"   ' , (-.#/01-
%'*"*0234" 

5#"'*6"7"

589:*8;"<= *0

%#/189"!>"***0
#4
Địa chỉ của biến
?6"@#'"A
?'
)B@'
C-@'
DE'F1898BG#-.H1-"6/I'*.8/@'(


$J<J.F:#KJJ'I1-L@'F8
J1M"KJJ J
#5
Địa chỉ của biến
%JN
%JO
%JP
%JQ
5-L'H
6/@
'H
%JNRR
%JNRN
%JNRO
%JNRP
5-L'
6/@
'
S.,*
THU
U
#6
Địa chỉ của biến
5-L@'66 #0"JVHW7'1(X"- 0
"JI0=I*Y=IZ
:J1-L@' ['
S.,
VW
2
H\]U

TJ\NR^U
TV_`H\aHb_I[HWU
TV_`J\aHcI[JWU
3
K t quế ả
Dia chi cua bien x = 0014FC00
Dia chi cua bien y = 0014FBF4
#7
Biến con trỏ
%' #'1)X1-L@6XBI($G7J
# 1-L@EG*)'
d
)Be??U
S.,
eHU
TeU
f:J"-@
e??U
#8
Con trỏ - Ví dụ
VW
2
eHIJU
TeIU
J\NRU
\NQ^U
H\[JU
\[U
TV_CH\ab_IeHWU
TV_C\aT_IeWU

3
Lấy địa chỉ của biến y gán vào px
Lấy giá trị của con trỏ px
Kết quả
Gia tri cua px = 10
Gia tri cua pa = 14.5
#9
Con trỏ - Ví dụ
VW
2
eHIJU
TeIU
J\NRU
\NQ^U
H\[JU
\[U
TV_`J\aHb_I[JWU
TV_`H\aHb_IHWU
TV_`\aHb_I[WU
TV_`\aHb_IWU
3
Dia chi cua bien y = d7f7dc
Dia chi cua bien px = d7f7dc
Dia chi cua bien b = d7f7c4
Dia chi cua bien pa = d7f7c4
#10
Sử dụng biến con trỏ
VW
2
eHU

TV_g"H_WU
TV_a_IHWU
TV_CH\a_IeHWU
3
!!!Chưa cấp phát bộ nhớ trước khi sử dụng
#11
Sử dụng biến con trỏ
S`QVW
2
eHU
H\VeWVNIhTVWWU
TV_g"H_WU
TV_a_IHWU
TV_CH\a_IeHWU
3
Cấp phát bộ nhớ cho px
Kết quả
Nhap vao gia tri cho con tro px: 16
Gia tri cua px = 16
#12
Cấp phát và giải phóng vùng nhớ
%'!189:7"/8/*i,"
Cch 1: dng calloc
//khai báo con trỏ p
int *p;
//cấp phát 100 ô nhớ mỗi ô chiếm 2bytes
p=(int *) calloc (100, sizeof (int));
#13
Cấp phát và giải phóng vùng nhớ
%'!189:7"/8/*i,"

Cch 2: dng malloc
//Khai báo con trỏ px
int *px;
//Cấp phát 100 ô nhớ kiểu int cho con trỏ px
px = (int *) malloc (100);
j*i,"H"<"!("7"/k" T
free(p) ; // giải phóng vùng nhớ cho con trỏ p
#14
Cấp phát và giải phóng vùng nhớ
VW
2
eHU
H\VeWVNWU
TV_g"H_WU
TV_a_IHWU
TV_CH\a_IeHWU
TVHWU
3
Giải phóng con trỏ px
#15
Con trỏ và mảng một chiều
l]mU
eHU
H\U 44H/MiXR
H\HnQU 44H/MiXQ
a[0] a[1] a[2] a[3] a[4] a[5] a[6]
     
H
#16
Con trỏ và mảng một chiều

gD"VeIW
2
TV\RUoUnnW
2
TV_ga_IWU
TV_a_InWU
3
3
pD"VeIW
2
TV\RUoUnnW
2
TV_ab_IeVnWWU
3
3
void main()
{
int *a, n=4;
a=(int *)malloc(n);
NhapMang(a, n);
XuatMang(a, n);
free(a);
}
Hoặc &a[i]
Hoặc a[i]
#17
Thay đổi kích thước của con trỏ đã cấp phát
d realloc(tên con trỏ, kích thước mới);
void main()
{

int *a, n=4;
a=(int *)malloc(n);
NhapMang(a, n);
XuatMang(a, n);
n=7;
realloc(a, n);
NhapMang(a, n);
XuatMang(a, n);
free(a);
}
#18
Con trỏ hàm

o*qVe? WV0WU
S`
e?"VIWU
?.97JrVW"r=" 
#19
Con trỏ hàm
SVIW
2
VnWeOU
3
`?VIW
2
eU
3
?VIIVesWVIWW
2
*t\VesWVIWU

*tU
3
#20
Con trỏ hàm
VW
2
\NRI\uU
VesWVIW\SU
\?VIIsWU
TV_\a_IWU
3
#21
Bài tập
N
S'8;"<"AXv";!HiY!"#$0"J7"

O
S'8;"<"AXv";!HiY&0"J7"
P
`7"*w& I'8;"<.x"II. 8;"@
y0,# "8z7"rXv" 
#22
Q&A

×