際際滷

際際滷Share a Scribd company logo
VCVC
&&
BBBB
11
N畛i dung
NMLT - Con tr畛 c董 b畉n
Kh叩i ni畛m v c叩ch s畛 d畛ng1
C叩c c叩ch truy畛n 畛i s畛 cho hm2
Con tr畛 v m畉ng m畛t chi畛u3
Con tr畛 v c畉u tr炭c4
VCVC
&&
BBBB
22
Ki畉n tr炭c m叩y t鱈nh
B畛 nh畛 m叩y t鱈nh
 B畛 nh畛 RAM ch畛a r畉t nhi畛u 担 nh畛, m畛i 担 nh畛
c坦 k鱈ch th動畛c 1 byte.
 RAM d湛ng 畛 ch畛a m畛t ph畉n h畛 i畛u hnh,
c叩c l畛nh ch動董ng tr狸nh, c叩c d畛 li畛u
 M畛i 担 nh畛 c坦 畛a ch畛 duy nh畉t v 畛a ch畛 ny
動畛c 叩nh s畛 t畛 0 tr畛 i.
 V鱈 d畛
 RAM 512MB 動畛c 叩nh 畛a ch畛 t畛 0 畉n 229
 1
 RAM 2GB 動畛c 叩nh 畛a ch畛 t畛 0 畉n 231
 1
NMLT - Con tr畛 c董 b畉n
VCVC
&&
BBBB
33
Quy tr狸nh x畛 l箪 c畛a tr狸nh bi棚n d畛ch
 Dnh ri棚ng m畛t v湛ng nh畛 v畛i 畛a ch畛 duy nh畉t
畛 l動u bi畉n 坦.
 Li棚n k畉t 畛a ch畛 担 nh畛 坦 v畛i t棚n bi畉n.
 Khi g畛i t棚n bi畉n, n坦 s畉 truy xu畉t t畛 畛ng 畉n
担 nh畛 達 li棚n k畉t v畛i t棚n bi畉n.
V鱈 d畛: int a = 0x1234; // Gi畉 s畛 畛a ch畛 0x0B

Khai b叩o bi畉n trong C
NMLT - Con tr畛 c董 b畉n
0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17
a
3434 1212 0000 0000
VCVC
&&
BBBB
44

Kh叩i ni畛m con tr畛
Kh叩i ni畛m
 畛a ch畛 c畛a bi畉n l m畛t con s畛.
 Ta c坦 th畛 t畉o bi畉n kh叩c 畛 l動u 畛a ch畛 c畛a
bi畉n ny  Con tr畛.
NMLT - Con tr畛 c董 b畉n
0A
3434
0B
1212
0C
0000
0D
0000
0E 0F 10 11 12 13 14 15 16 17
a pa
0B0B 0000 0000 0000
VCVC
&&
BBBB
55
Khai b叩o con tr畛
Khai b叩o
 Gi畛ng nh動 m畛i bi畉n kh叩c, bi畉n con tr畛 mu畛n
s畛 d畛ng c滴ng c畉n ph畉i 動畛c khai b叩o
V鱈 d畛
 ch1 v ch2 l bi畉n con tr畛, tr畛 t畛i v湛ng nh畛
ki畛u char (1 byte).
 p1 l bi畉n con tr畛, tr畛 t畛i v湛ng nh畛 ki畛u int (4
bytes) c嘆n p2 l bi畉n ki畛u int b狸nh th動畛ng.
NMLT - Con tr畛 c董 b畉n
<ki畛u d畛 li畛u> *<t棚n bi畉n con tr畛>;
char *ch1, *ch2;
int *p1, p2;
VCVC
&&
BBBB
66
Khai b叩o con tr畛
S畛 d畛ng t畛 kh坦a typedef
V鱈 d畛
L動u 箪 khi khai b叩o ki畛u d畛 li畛u m畛i
 Gi畉m b畛i r畛i khi m畛i ti畉p x炭c v畛i con tr畛.
 Nh動ng d畛 nh畉m l畉n v畛i bi畉n th動畛ng.
NMLT - Con tr畛 c董 b畉n
typedef <ki畛u d畛 li畛u> *<t棚n ki畛u con tr畛>;
<t棚n ki畛u con tr畛> <t棚n bi畉n con tr畛>;
typedef int *pint;
int *p1;
pint p2, p3;
VCVC
&&
BBBB
77
Con tr畛 NULL
Kh叩i ni畛m
 Con tr畛 NULL l con tr畛 kh担ng tr畛 v 但u c畉.
 Kh叩c v畛i con tr畛 ch動a 動畛c kh畛i t畉o.
NMLT - Con tr畛 c董 b畉n
NULL
int n;
int *p1 = &n;
int *p2; // unreferenced local varialbe
int *p3 = NULL;
VCVC
&&
BBBB
88
Kh畛i t畉o ki畛u con tr畛
Kh畛i t畉o
 Khi m畛i khai b叩o, bi畉n con tr畛 動畛c 畉t 畛 畛a
ch畛 no 坦 (kh担ng bi畉t tr動畛c).
 ch畛a gi叩 tr畛 kh担ng x叩c 畛nh
 tr畛 畉n v湛ng nh畛 kh担ng bi畉t tr動畛c.
 畉t 畛a ch畛 c畛a bi畉n vo con tr畛 (to叩n t畛 &)
V鱈 d畛
NMLT - Con tr畛 c董 b畉n
<t棚n bi畉n con tr畛> = &<t棚n bi畉n>;
int a, b;
int *pa = &a, *pb;
pb = &b;
VCVC
&&
BBBB
99
S畛 d畛ng con tr畛
Truy xu畉t 畉n 担 nh畛 m con tr畛 tr畛 畉n
 Con tr畛 ch畛a m畛t s畛 nguy棚n ch畛 畛a ch畛.
 V湛ng nh畛 m n坦 tr畛 畉n, s畛 d畛ng to叩n t畛 *.
V鱈 d畛
NMLT - Con tr畛 c董 b畉n
int a = 5, *pa = &a;
printf(%dn, pa); // Gi叩 tr畛 bi畉n pa
printf(%dn, *pa); // Gi叩 tr畛 v湛ng nh畛 pa tr畛 畉n
printf(%dn, &pa); // 畛a ch畛 bi畉n pa

0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17
a pa
0B0B 0000 0000 00000505 0000 0000 0000
VCVC
&&
BBBB
1010
K鱈ch th動畛c c畛a con tr畛
K鱈ch th動畛c c畛a con tr畛
 Con tr畛 ch畛 l動u 畛a ch畛 n棚n k鱈ch th動畛c c畛a
m畛i con tr畛 l nh動 nhau:
 M担i tr動畛ng MD-DOS (16 bit): 2 bytes
 M担i tr動畛ng Windows (32 bit): 4 bytes
NMLT - Con tr畛 c董 b畉n
char *p1;
int *p2;
float *p3;
double *p4;
VCVC
&&
BBBB
1111
C叩c c叩ch truy畛n 畛i s畛
Truy畛n gi叩 tr畛 (tham tr畛)
NMLT - Con tr畛 c董 b畉n
#include <stdio.h>
void hoanvi(int x, int y);
void main()
{
int a = 5; b = 6;
hoanvi(a, b);
printf(a = %d, b = %d, a, b);
}
void hoanvi(int x, int y)
{
int t = x; x = y; y = t;
}
VCVC
&&
BBBB
1212
int t = x;
x = y;
y = t;
Truy畛n gi叩 tr畛 (tham tr畛)
NMLT - Con tr畛 c董 b畉n
 0505 0000 0000 0000 0606 0000 0000 0000
int a = 5
0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17
int b = 6
int xint x int yint yhoanvi

18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25
int x int y
0505 0000 0000 0000 0606 0000 0000 0000
VCVC
&&
BBBB
1313
C叩c c叩ch truy畛n 畛i s畛
Truy畛n 畛a ch畛 (con tr畛)
NMLT - Con tr畛 c董 b畉n
#include <stdio.h>
void hoanvi(int *x, int *y);
void main()
{
int a = 2912; b = 1706;
hoanvi(&a, &b);
printf(a = %d, b = %d, a, b);
}
void hoanvi(int *x, int *y)
{
int t = *x; *x = *y; *y = t;
}
VCVC
&&
BBBB
1414
int t = *x;
*x = *y;
*y = *t;
Truy畛n 畛a ch畛 (con tr畛)
NMLT - Con tr畛 c董 b畉n

int a = 5
0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17
int b = 6
int *xint *x int *yint *yhoanvi

18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25
int *x int *y
0B0B 0000 0000 0000 0F0F 0000 0000 0000
0505 0000 0000 0000 0606 0000 0000 0000
VCVC
&&
BBBB
1515
C叩c c叩ch truy畛n 畛i s畛
Truy畛n tham chi畉u (C++)
NMLT - Con tr畛 c董 b畉n
#include <stdio.h>
void hoanvi(int &x, int &y);
void main()
{
int a = 2912; b = 1706;
hoanvi(a, b);
printf(a = %d, b = %d, a, b);
}
void hoanvi(int &x, int &y)
{
int t = x; x = y; y = t;
}
VCVC
&&
BBBB
1616
int t = x;
x = y;
y = t;
Truy畛n tham chi畉u (C++)
NMLT - Con tr畛 c董 b畉n

int a = 5
0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17
int b = 6
int &xint &x int &yint &yhoanvi
0505 0000 0000 0000 0606 0000 0000 0000
VCVC
&&
BBBB
1717
M畛t s畛 l動u 箪
M畛t s畛 l動u 箪
 Con tr畛 l kh叩i ni畛m quan tr畛ng v kh坦 nh畉t
trong C. M畛c 畛 thnh th畉o C 動畛c 叩nh gi叩
qua m畛c 畛 s畛 d畛ng con tr畛.
 N畉m r探 quy t畉c sau, v鱈 d畛 int a, *pa = &a;
 *pa v a 畛u ch畛 n畛i dung c畛a bi畉n a.
 pa v &a 畛u ch畛 畛a ch畛 c畛a bi畉n a.
 Kh担ng n棚n s畛 d畛ng con tr畛 khi ch動a 動畛c
kh畛i t畉o. K畉t qu畉 s畉 kh担ng l動畛ng tr動畛c
動畛c.
NMLT - Con tr畛 c董 b畉n
int *pa; *pa = 1904;
VCVC
&&
BBBB
1818
Con tr畛 v m畉ng m畛t chi畛u
M畉ng m畛t chi畛u
 T棚n m畉ng array l m畛t h畉ng con tr畛
 kh担ng th畛 thay 畛i gi叩 tr畛 c畛a h畉ng ny.
 array l 畛a ch畛 畉u ti棚n c畛a m畉ng
array == &array[0]
NMLT - Con tr畛 c董 b畉n
int array[3];

array
0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17
VCVC
&&
BBBB
1919
Con tr畛 畉n m畉ng m畛t chi畛u

Con tr畛 v m畉ng m畛t chi畛u
NMLT - Con tr畛 c董 b畉n
int array[3], *parray;
parray = array; // C叩ch 1
parray = &array[0]; // C叩ch 2

array
0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17

18 19 1A 1B 1C 1D 1E 1F
parray
0B0B 0000 0000 0000
VCVC
&&
BBBB
2020
Ph辿p c畛ng (tng)
 + n  + n * sizeof(<ki畛u d畛 li畛u>)
 C坦 th畛 s畛 d畛ng to叩n t畛 g畛p += ho畉c ++
+2
Ph辿p to叩n s畛 h畛c tr棚n con tr畛
NMLT - Con tr畛 c董 b畉n

p = array
0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17
+1
int array[3];
VCVC
&&
BBBB
2121
Ph辿p tr畛 (gi畉m)
  n   n * sizeof(<ki畛u d畛 li畛u>)
 C坦 th畛 s畛 d畛ng to叩n t畛 g畛p = ho畉c  
Ph辿p to叩n s畛 h畛c tr棚n con tr畛
NMLT - Con tr畛 c董 b畉n
p = &array[2]
1
2

0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17
int array[3];
VCVC
&&
BBBB
2222
p2 = &array[2]p1 = array
Ph辿p to叩n t鱈nh kho畉ng c叩ch gi畛a 2 con tr畛
 <ki畛u d畛 li畛u> *p1, *p2;
 p1  p2 cho ta kho畉ng c叩ch (theo s畛 ph畉n t畛)
gi畛a hai con tr畛 (c湛ng ki畛u)
Ph辿p to叩n s畛 h畛c tr棚n con tr畛
NMLT - Con tr畛 c董 b畉n

0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17
int array[3];
p1  p2= (0B  13)/sizeof(int) = 2
p2  p1= (13  0B)/sizeof(int) = +2
VCVC
&&
BBBB
2323
C叩c ph辿p to叩n kh叩c
 Ph辿p so s叩nh: So s叩nh 畛a ch畛 gi畛a hai con
tr畛 (th畛 t畛 担 nh畛)
 == !=
 > >=
 < <=
 Kh担ng th畛 th畛c hi畛n c叩c ph辿p to叩n: * / %
Ph辿p to叩n s畛 h畛c tr棚n con tr畛
NMLT - Con tr畛 c董 b畉n
VCVC
&&
BBBB
2424
Truy xu畉t 畉n ph畉n t畛 th畛 n c畛a m畉ng (kh担ng
s畛 d畛ng bi畉n m畉ng)
 array[n] == p[n] == *(p + n)
Con tr畛 v m畉ng m畛t chi畛u
NMLT - Con tr畛 c董 b畉n

p
0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17
int array[3];
+ 2 )(*
VCVC
&&
BBBB
2525
Con tr畛 v m畉ng m畛t chi畛u
V鱈 d畛 nh畉p m畉ng
NMLT - Con tr畛 c董 b畉n
void main()
{
int a[10], n = 10, *pa;
pa = a; // ho畉c pa = &a[0];
for (int i = 0; i<n; i++)
scanf(%d, &a[i]);
scanf(%d, &p[i]);
scanf(%d, a + i);
scanf(%d, p + i);
scanf(%d, a++);
scanf(%d, p++);
}
 &a[i]  (a + i)  (p + i)  &p[i]
VCVC
&&
BBBB
2626
Con tr畛 v m畉ng m畛t chi畛u
V鱈 d畛 xu畉t m畉ng
NMLT - Con tr畛 c董 b畉n
void main()
{
int a[10], n = 10, *pa;
pa = a; // ho畉c pa = &a[0];

for (int i = 0; i<n; i++)
printf(%d, a[i]);
printf(%d, p[i]);
printf(%d, *(a + i));
printf(%d, *(p + i));
printf(%d, *(a++));
printf(%d, *(p++));
}
 a[i]  *(a + i)  *(p + i)  p[i]
VCVC
&&
BBBB
2727
Truy畛n m畉ng 1 chi畛u cho hm
Ch炭 箪!
 M畉ng m畛t chi畛u truy畛n cho hm l 畛a ch畛 c畛a
ph畉n t畛 畉u ti棚n ch畛 kh担ng ph畉i ton m畉ng.
NMLT - Con tr畛 c董 b畉n

10 11 13 14 15 16 17 18 19 20 21 22 23 24
int array[3];
int a[3]int a[3] int nint nxu畉t
int a[]int a[] int *aint *a
VCVC
&&
BBBB
2828
Con tr畛 c畉u tr炭c
Truy xu畉t b畉ng 2 c叩ch
V鱈 d畛
NMLT - Con tr畛 c董 b畉n
struct PHANSO
{
int tu, mau;
};
PHANSO ps1, *ps2 = &p1; // ps2 l con tr畛
ps1.tu = 1; ps1.mau = 2;
ps2->tu = 1; ps2->mau = 2;
(*ps2).tu = 1; (*ps2).mau = 2;
<t棚n bi畉n con tr畛 c畉u tr炭c>-><t棚n thnh ph畉n>
(*<t棚n bi畉n con tr畛 c畉u tr炭c>).<t棚n thnh ph畉n>
VCVC
&&
BBBB
2929
Con tr畛 c畉u tr炭c
G叩n hai c畉u tr炭c
NMLT - Con tr畛 c董 b畉n
struct PHANSO
{
int tu, mau;
};
PHANSO ps1, *ps2;
ps1.tu = 1; ps1.mau = 2; // ps1 = 1/2
ps2 = &ps1;
ps2->tu = 3; ps2->mau = 4; // ps1 = 3/4
VCVC
&&
BBBB
3030
Bi t畉p l箪 thuy畉t
Bi 1: Cho o畉n ch動董ng tr狸nh sau:
float pay;
float *ptr_pay;
pay=2313.54;
ptr_pay = &pay;
H達y cho bi畉t gi叩 tr畛 c畛a:
a. pay
b. *ptr_pay
c. *pay
d. &pay Tin h畛c c董 s畛 2 - 畉ng B狸nh Ph動董ng

More Related Content

What's hot (19)

Nmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequyNmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequy
Minh Ngoc Tran
Nmlt c10 cau_truc
Nmlt c10 cau_trucNmlt c10 cau_truc
Nmlt c10 cau_truc
Minh Ngoc Tran
Nmlt c02 gioi_thieunnltc
Nmlt c02 gioi_thieunnltcNmlt c02 gioi_thieunnltc
Nmlt c02 gioi_thieunnltc
Minh Ngoc Tran
Nmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_inNmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_in
Huy Nguy畛n
Nmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinhNmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinh
Minh Ngoc Tran
Nmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlapNmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlap
Minh Ngoc Tran
Nmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co SoNmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co So
Cuong
Nmlt C08 Mang2 Chieu
Nmlt C08 Mang2 ChieuNmlt C08 Mang2 Chieu
Nmlt C08 Mang2 Chieu
Cuong
3 Function
3 Function3 Function
3 Function
Cuong
Nmlt C06 Ham
Nmlt C06 HamNmlt C06 Ham
Nmlt C06 Ham
Cuong
H動畛ng d畉n lm bt v畛 chu畛i.doc
H動畛ng d畉n lm bt v畛 chu畛i.docH動畛ng d畉n lm bt v畛 chu畛i.doc
H動畛ng d畉n lm bt v畛 chu畛i.doc
Tr畉n Vn Nam
Nmlt c06 ham_in
Nmlt c06 ham_inNmlt c06 ham_in
Nmlt c06 ham_in
Huy Nguy畛n
Nmlt C07 Mang1 Chieu
Nmlt C07 Mang1 ChieuNmlt C07 Mang1 Chieu
Nmlt C07 Mang1 Chieu
Cuong
Ph畉n 8: M畉ng hai chi畛u
Ph畉n 8: M畉ng hai chi畛uPh畉n 8: M畉ng hai chi畛u
Ph畉n 8: M畉ng hai chi畛u
Huy R湛a
Ctdl C01
Ctdl C01Ctdl C01
Ctdl C01
giang
Nmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequyNmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequy
Minh Ngoc Tran
Nmlt c02 gioi_thieunnltc
Nmlt c02 gioi_thieunnltcNmlt c02 gioi_thieunnltc
Nmlt c02 gioi_thieunnltc
Minh Ngoc Tran
Nmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_inNmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_in
Huy Nguy畛n
Nmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinhNmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinh
Minh Ngoc Tran
Nmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlapNmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlap
Minh Ngoc Tran
Nmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co SoNmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co So
Cuong
Nmlt C08 Mang2 Chieu
Nmlt C08 Mang2 ChieuNmlt C08 Mang2 Chieu
Nmlt C08 Mang2 Chieu
Cuong
3 Function
3 Function3 Function
3 Function
Cuong
Nmlt C06 Ham
Nmlt C06 HamNmlt C06 Ham
Nmlt C06 Ham
Cuong
H動畛ng d畉n lm bt v畛 chu畛i.doc
H動畛ng d畉n lm bt v畛 chu畛i.docH動畛ng d畉n lm bt v畛 chu畛i.doc
H動畛ng d畉n lm bt v畛 chu畛i.doc
Tr畉n Vn Nam
Nmlt c06 ham_in
Nmlt c06 ham_inNmlt c06 ham_in
Nmlt c06 ham_in
Huy Nguy畛n
Nmlt C07 Mang1 Chieu
Nmlt C07 Mang1 ChieuNmlt C07 Mang1 Chieu
Nmlt C07 Mang1 Chieu
Cuong
Ph畉n 8: M畉ng hai chi畛u
Ph畉n 8: M畉ng hai chi畛uPh畉n 8: M畉ng hai chi畛u
Ph畉n 8: M畉ng hai chi畛u
Huy R湛a
Ctdl C01
Ctdl C01Ctdl C01
Ctdl C01
giang

Similar to Nmlt c11 con_trocoban- (20)

際際滷 pointer sepro
際際滷 pointer sepro際際滷 pointer sepro
際際滷 pointer sepro
Anh L棚 Ng畛c
Nmlt c13 con_tronangcao_in
Nmlt c13 con_tronangcao_inNmlt c13 con_tronangcao_in
Nmlt c13 con_tronangcao_in
Huy Nguy畛n
Nmlt c03 cac_kieudulieucoso_in
Nmlt c03 cac_kieudulieucoso_inNmlt c03 cac_kieudulieucoso_in
Nmlt c03 cac_kieudulieucoso_in
Huy Nguy畛n
Nmlt c12 quan_lybonho_in
Nmlt c12 quan_lybonho_inNmlt c12 quan_lybonho_in
Nmlt c12 quan_lybonho_in
Huy Nguy畛n
Nmlt c13 con_trocoban
Nmlt c13 con_trocobanNmlt c13 con_trocoban
Nmlt c13 con_trocoban
vitbau1412
Nmlt c07 mang1_chieu_in
Nmlt c07 mang1_chieu_inNmlt c07 mang1_chieu_in
Nmlt c07 mang1_chieu_in
Huy Nguy畛n
NMLT_C07_Mang1Chieu.pptx
NMLT_C07_Mang1Chieu.pptxNMLT_C07_Mang1Chieu.pptx
NMLT_C07_Mang1Chieu.pptx
TngNguyn371609
Ngon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiNgon ngu c theo chuan ansi
Ngon ngu c theo chuan ansi
Huynh MVT
Bai giangtrenlop
Bai giangtrenlopBai giangtrenlop
Bai giangtrenlop
H畛 L畛i
Chap3 8051 microcontroller 但 assembly
Chap3 8051 microcontroller 但 assemblyChap3 8051 microcontroller 但 assembly
Chap3 8051 microcontroller 但 assembly
vietanhetc
Pointer
PointerPointer
Pointer
Phi T動畛ng
Nmlt c08 mang2_chieu_in
Nmlt c08 mang2_chieu_inNmlt c08 mang2_chieu_in
Nmlt c08 mang2_chieu_in
Huy Nguy畛n
Pointer vn
Pointer vnPointer vn
Pointer vn
Harry Potter
Gi畛i thi畛u ng担n ng畛 l畉p tr狸nh C++
Gi畛i thi畛u ng担n ng畛 l畉p tr狸nh C++Gi畛i thi畛u ng担n ng畛 l畉p tr狸nh C++
Gi畛i thi畛u ng担n ng畛 l畉p tr狸nh C++
LAnhHuy4
畛 叩n asembly thi畉t k畉 b畛 畉m s畉n ph畉m 6 k棚nh d湛ng on chip 89c51.doc
畛 叩n asembly thi畉t k畉 b畛 畉m s畉n ph畉m 6 k棚nh d湛ng on chip 89c51.doc畛 叩n asembly thi畉t k畉 b畛 畉m s畉n ph畉m 6 k棚nh d湛ng on chip 89c51.doc
畛 叩n asembly thi畉t k畉 b畛 畉m s畉n ph畉m 6 k棚nh d湛ng on chip 89c51.doc
D畛ch V畛 Vi畉t Bi Tr畛n G坦i ZALO 0917193864
Lec3. Ham.pdf
Lec3. Ham.pdfLec3. Ham.pdf
Lec3. Ham.pdf
KinHongnh
T畛 h畛c PLC CP1L
T畛 h畛c PLC CP1LT畛 h畛c PLC CP1L
T畛 h畛c PLC CP1L
quanglocbp
際際滷 pointer sepro
際際滷 pointer sepro際際滷 pointer sepro
際際滷 pointer sepro
Anh L棚 Ng畛c
Nmlt c13 con_tronangcao_in
Nmlt c13 con_tronangcao_inNmlt c13 con_tronangcao_in
Nmlt c13 con_tronangcao_in
Huy Nguy畛n
Nmlt c03 cac_kieudulieucoso_in
Nmlt c03 cac_kieudulieucoso_inNmlt c03 cac_kieudulieucoso_in
Nmlt c03 cac_kieudulieucoso_in
Huy Nguy畛n
Nmlt c12 quan_lybonho_in
Nmlt c12 quan_lybonho_inNmlt c12 quan_lybonho_in
Nmlt c12 quan_lybonho_in
Huy Nguy畛n
Nmlt c13 con_trocoban
Nmlt c13 con_trocobanNmlt c13 con_trocoban
Nmlt c13 con_trocoban
vitbau1412
Nmlt c07 mang1_chieu_in
Nmlt c07 mang1_chieu_inNmlt c07 mang1_chieu_in
Nmlt c07 mang1_chieu_in
Huy Nguy畛n
NMLT_C07_Mang1Chieu.pptx
NMLT_C07_Mang1Chieu.pptxNMLT_C07_Mang1Chieu.pptx
NMLT_C07_Mang1Chieu.pptx
TngNguyn371609
Ngon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiNgon ngu c theo chuan ansi
Ngon ngu c theo chuan ansi
Huynh MVT
Bai giangtrenlop
Bai giangtrenlopBai giangtrenlop
Bai giangtrenlop
H畛 L畛i
Chap3 8051 microcontroller 但 assembly
Chap3 8051 microcontroller 但 assemblyChap3 8051 microcontroller 但 assembly
Chap3 8051 microcontroller 但 assembly
vietanhetc
Nmlt c08 mang2_chieu_in
Nmlt c08 mang2_chieu_inNmlt c08 mang2_chieu_in
Nmlt c08 mang2_chieu_in
Huy Nguy畛n
Gi畛i thi畛u ng担n ng畛 l畉p tr狸nh C++
Gi畛i thi畛u ng担n ng畛 l畉p tr狸nh C++Gi畛i thi畛u ng担n ng畛 l畉p tr狸nh C++
Gi畛i thi畛u ng担n ng畛 l畉p tr狸nh C++
LAnhHuy4
Lec3. Ham.pdf
Lec3. Ham.pdfLec3. Ham.pdf
Lec3. Ham.pdf
KinHongnh
T畛 h畛c PLC CP1L
T畛 h畛c PLC CP1LT畛 h畛c PLC CP1L
T畛 h畛c PLC CP1L
quanglocbp

More from Minh Ngoc Tran (7)

Chuong9 lop vadoituong
Chuong9 lop vadoituongChuong9 lop vadoituong
Chuong9 lop vadoituong
Minh Ngoc Tran
Bai tapktlt phan3
Bai tapktlt phan3Bai tapktlt phan3
Bai tapktlt phan3
Minh Ngoc Tran
Bai tapktlt phan2
Bai tapktlt phan2Bai tapktlt phan2
Bai tapktlt phan2
Minh Ngoc Tran
Bai tapktlt phan1
Bai tapktlt phan1Bai tapktlt phan1
Bai tapktlt phan1
Minh Ngoc Tran
L畉p tr狸nh c++ c坦 l畛i gi畉i 2
L畉p tr狸nh c++ c坦 l畛i gi畉i 2L畉p tr狸nh c++ c坦 l畛i gi畉i 2
L畉p tr狸nh c++ c坦 l畛i gi畉i 2
Minh Ngoc Tran
Lap trinh c++ c坦 l畛i gi畉i 1
Lap trinh c++ c坦 l畛i gi畉i 1Lap trinh c++ c坦 l畛i gi畉i 1
Lap trinh c++ c坦 l畛i gi畉i 1
Minh Ngoc Tran
Lap trinh c++ c坦 l畛i gi畉i 3
Lap trinh c++ c坦 l畛i gi畉i 3Lap trinh c++ c坦 l畛i gi畉i 3
Lap trinh c++ c坦 l畛i gi畉i 3
Minh Ngoc Tran
Chuong9 lop vadoituong
Chuong9 lop vadoituongChuong9 lop vadoituong
Chuong9 lop vadoituong
Minh Ngoc Tran
L畉p tr狸nh c++ c坦 l畛i gi畉i 2
L畉p tr狸nh c++ c坦 l畛i gi畉i 2L畉p tr狸nh c++ c坦 l畛i gi畉i 2
L畉p tr狸nh c++ c坦 l畛i gi畉i 2
Minh Ngoc Tran
Lap trinh c++ c坦 l畛i gi畉i 1
Lap trinh c++ c坦 l畛i gi畉i 1Lap trinh c++ c坦 l畛i gi畉i 1
Lap trinh c++ c坦 l畛i gi畉i 1
Minh Ngoc Tran
Lap trinh c++ c坦 l畛i gi畉i 3
Lap trinh c++ c坦 l畛i gi畉i 3Lap trinh c++ c坦 l畛i gi畉i 3
Lap trinh c++ c坦 l畛i gi畉i 3
Minh Ngoc Tran

Nmlt c11 con_trocoban-

  • 1. VCVC && BBBB 11 N畛i dung NMLT - Con tr畛 c董 b畉n Kh叩i ni畛m v c叩ch s畛 d畛ng1 C叩c c叩ch truy畛n 畛i s畛 cho hm2 Con tr畛 v m畉ng m畛t chi畛u3 Con tr畛 v c畉u tr炭c4
  • 2. VCVC && BBBB 22 Ki畉n tr炭c m叩y t鱈nh B畛 nh畛 m叩y t鱈nh B畛 nh畛 RAM ch畛a r畉t nhi畛u 担 nh畛, m畛i 担 nh畛 c坦 k鱈ch th動畛c 1 byte. RAM d湛ng 畛 ch畛a m畛t ph畉n h畛 i畛u hnh, c叩c l畛nh ch動董ng tr狸nh, c叩c d畛 li畛u M畛i 担 nh畛 c坦 畛a ch畛 duy nh畉t v 畛a ch畛 ny 動畛c 叩nh s畛 t畛 0 tr畛 i. V鱈 d畛 RAM 512MB 動畛c 叩nh 畛a ch畛 t畛 0 畉n 229 1 RAM 2GB 動畛c 叩nh 畛a ch畛 t畛 0 畉n 231 1 NMLT - Con tr畛 c董 b畉n
  • 3. VCVC && BBBB 33 Quy tr狸nh x畛 l箪 c畛a tr狸nh bi棚n d畛ch Dnh ri棚ng m畛t v湛ng nh畛 v畛i 畛a ch畛 duy nh畉t 畛 l動u bi畉n 坦. Li棚n k畉t 畛a ch畛 担 nh畛 坦 v畛i t棚n bi畉n. Khi g畛i t棚n bi畉n, n坦 s畉 truy xu畉t t畛 畛ng 畉n 担 nh畛 達 li棚n k畉t v畛i t棚n bi畉n. V鱈 d畛: int a = 0x1234; // Gi畉 s畛 畛a ch畛 0x0B Khai b叩o bi畉n trong C NMLT - Con tr畛 c董 b畉n 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 a 3434 1212 0000 0000
  • 4. VCVC && BBBB 44 Kh叩i ni畛m con tr畛 Kh叩i ni畛m 畛a ch畛 c畛a bi畉n l m畛t con s畛. Ta c坦 th畛 t畉o bi畉n kh叩c 畛 l動u 畛a ch畛 c畛a bi畉n ny Con tr畛. NMLT - Con tr畛 c董 b畉n 0A 3434 0B 1212 0C 0000 0D 0000 0E 0F 10 11 12 13 14 15 16 17 a pa 0B0B 0000 0000 0000
  • 5. VCVC && BBBB 55 Khai b叩o con tr畛 Khai b叩o Gi畛ng nh動 m畛i bi畉n kh叩c, bi畉n con tr畛 mu畛n s畛 d畛ng c滴ng c畉n ph畉i 動畛c khai b叩o V鱈 d畛 ch1 v ch2 l bi畉n con tr畛, tr畛 t畛i v湛ng nh畛 ki畛u char (1 byte). p1 l bi畉n con tr畛, tr畛 t畛i v湛ng nh畛 ki畛u int (4 bytes) c嘆n p2 l bi畉n ki畛u int b狸nh th動畛ng. NMLT - Con tr畛 c董 b畉n <ki畛u d畛 li畛u> *<t棚n bi畉n con tr畛>; char *ch1, *ch2; int *p1, p2;
  • 6. VCVC && BBBB 66 Khai b叩o con tr畛 S畛 d畛ng t畛 kh坦a typedef V鱈 d畛 L動u 箪 khi khai b叩o ki畛u d畛 li畛u m畛i Gi畉m b畛i r畛i khi m畛i ti畉p x炭c v畛i con tr畛. Nh動ng d畛 nh畉m l畉n v畛i bi畉n th動畛ng. NMLT - Con tr畛 c董 b畉n typedef <ki畛u d畛 li畛u> *<t棚n ki畛u con tr畛>; <t棚n ki畛u con tr畛> <t棚n bi畉n con tr畛>; typedef int *pint; int *p1; pint p2, p3;
  • 7. VCVC && BBBB 77 Con tr畛 NULL Kh叩i ni畛m Con tr畛 NULL l con tr畛 kh担ng tr畛 v 但u c畉. Kh叩c v畛i con tr畛 ch動a 動畛c kh畛i t畉o. NMLT - Con tr畛 c董 b畉n NULL int n; int *p1 = &n; int *p2; // unreferenced local varialbe int *p3 = NULL;
  • 8. VCVC && BBBB 88 Kh畛i t畉o ki畛u con tr畛 Kh畛i t畉o Khi m畛i khai b叩o, bi畉n con tr畛 動畛c 畉t 畛 畛a ch畛 no 坦 (kh担ng bi畉t tr動畛c). ch畛a gi叩 tr畛 kh担ng x叩c 畛nh tr畛 畉n v湛ng nh畛 kh担ng bi畉t tr動畛c. 畉t 畛a ch畛 c畛a bi畉n vo con tr畛 (to叩n t畛 &) V鱈 d畛 NMLT - Con tr畛 c董 b畉n <t棚n bi畉n con tr畛> = &<t棚n bi畉n>; int a, b; int *pa = &a, *pb; pb = &b;
  • 9. VCVC && BBBB 99 S畛 d畛ng con tr畛 Truy xu畉t 畉n 担 nh畛 m con tr畛 tr畛 畉n Con tr畛 ch畛a m畛t s畛 nguy棚n ch畛 畛a ch畛. V湛ng nh畛 m n坦 tr畛 畉n, s畛 d畛ng to叩n t畛 *. V鱈 d畛 NMLT - Con tr畛 c董 b畉n int a = 5, *pa = &a; printf(%dn, pa); // Gi叩 tr畛 bi畉n pa printf(%dn, *pa); // Gi叩 tr畛 v湛ng nh畛 pa tr畛 畉n printf(%dn, &pa); // 畛a ch畛 bi畉n pa 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 a pa 0B0B 0000 0000 00000505 0000 0000 0000
  • 10. VCVC && BBBB 1010 K鱈ch th動畛c c畛a con tr畛 K鱈ch th動畛c c畛a con tr畛 Con tr畛 ch畛 l動u 畛a ch畛 n棚n k鱈ch th動畛c c畛a m畛i con tr畛 l nh動 nhau: M担i tr動畛ng MD-DOS (16 bit): 2 bytes M担i tr動畛ng Windows (32 bit): 4 bytes NMLT - Con tr畛 c董 b畉n char *p1; int *p2; float *p3; double *p4;
  • 11. VCVC && BBBB 1111 C叩c c叩ch truy畛n 畛i s畛 Truy畛n gi叩 tr畛 (tham tr畛) NMLT - Con tr畛 c董 b畉n #include <stdio.h> void hoanvi(int x, int y); void main() { int a = 5; b = 6; hoanvi(a, b); printf(a = %d, b = %d, a, b); } void hoanvi(int x, int y) { int t = x; x = y; y = t; }
  • 12. VCVC && BBBB 1212 int t = x; x = y; y = t; Truy畛n gi叩 tr畛 (tham tr畛) NMLT - Con tr畛 c董 b畉n 0505 0000 0000 0000 0606 0000 0000 0000 int a = 5 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 int b = 6 int xint x int yint yhoanvi 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 int x int y 0505 0000 0000 0000 0606 0000 0000 0000
  • 13. VCVC && BBBB 1313 C叩c c叩ch truy畛n 畛i s畛 Truy畛n 畛a ch畛 (con tr畛) NMLT - Con tr畛 c董 b畉n #include <stdio.h> void hoanvi(int *x, int *y); void main() { int a = 2912; b = 1706; hoanvi(&a, &b); printf(a = %d, b = %d, a, b); } void hoanvi(int *x, int *y) { int t = *x; *x = *y; *y = t; }
  • 14. VCVC && BBBB 1414 int t = *x; *x = *y; *y = *t; Truy畛n 畛a ch畛 (con tr畛) NMLT - Con tr畛 c董 b畉n int a = 5 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 int b = 6 int *xint *x int *yint *yhoanvi 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 int *x int *y 0B0B 0000 0000 0000 0F0F 0000 0000 0000 0505 0000 0000 0000 0606 0000 0000 0000
  • 15. VCVC && BBBB 1515 C叩c c叩ch truy畛n 畛i s畛 Truy畛n tham chi畉u (C++) NMLT - Con tr畛 c董 b畉n #include <stdio.h> void hoanvi(int &x, int &y); void main() { int a = 2912; b = 1706; hoanvi(a, b); printf(a = %d, b = %d, a, b); } void hoanvi(int &x, int &y) { int t = x; x = y; y = t; }
  • 16. VCVC && BBBB 1616 int t = x; x = y; y = t; Truy畛n tham chi畉u (C++) NMLT - Con tr畛 c董 b畉n int a = 5 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 int b = 6 int &xint &x int &yint &yhoanvi 0505 0000 0000 0000 0606 0000 0000 0000
  • 17. VCVC && BBBB 1717 M畛t s畛 l動u 箪 M畛t s畛 l動u 箪 Con tr畛 l kh叩i ni畛m quan tr畛ng v kh坦 nh畉t trong C. M畛c 畛 thnh th畉o C 動畛c 叩nh gi叩 qua m畛c 畛 s畛 d畛ng con tr畛. N畉m r探 quy t畉c sau, v鱈 d畛 int a, *pa = &a; *pa v a 畛u ch畛 n畛i dung c畛a bi畉n a. pa v &a 畛u ch畛 畛a ch畛 c畛a bi畉n a. Kh担ng n棚n s畛 d畛ng con tr畛 khi ch動a 動畛c kh畛i t畉o. K畉t qu畉 s畉 kh担ng l動畛ng tr動畛c 動畛c. NMLT - Con tr畛 c董 b畉n int *pa; *pa = 1904;
  • 18. VCVC && BBBB 1818 Con tr畛 v m畉ng m畛t chi畛u M畉ng m畛t chi畛u T棚n m畉ng array l m畛t h畉ng con tr畛 kh担ng th畛 thay 畛i gi叩 tr畛 c畛a h畉ng ny. array l 畛a ch畛 畉u ti棚n c畛a m畉ng array == &array[0] NMLT - Con tr畛 c董 b畉n int array[3]; array 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17
  • 19. VCVC && BBBB 1919 Con tr畛 畉n m畉ng m畛t chi畛u Con tr畛 v m畉ng m畛t chi畛u NMLT - Con tr畛 c董 b畉n int array[3], *parray; parray = array; // C叩ch 1 parray = &array[0]; // C叩ch 2 array 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F parray 0B0B 0000 0000 0000
  • 20. VCVC && BBBB 2020 Ph辿p c畛ng (tng) + n + n * sizeof(<ki畛u d畛 li畛u>) C坦 th畛 s畛 d畛ng to叩n t畛 g畛p += ho畉c ++ +2 Ph辿p to叩n s畛 h畛c tr棚n con tr畛 NMLT - Con tr畛 c董 b畉n p = array 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 +1 int array[3];
  • 21. VCVC && BBBB 2121 Ph辿p tr畛 (gi畉m) n n * sizeof(<ki畛u d畛 li畛u>) C坦 th畛 s畛 d畛ng to叩n t畛 g畛p = ho畉c Ph辿p to叩n s畛 h畛c tr棚n con tr畛 NMLT - Con tr畛 c董 b畉n p = &array[2] 1 2 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 int array[3];
  • 22. VCVC && BBBB 2222 p2 = &array[2]p1 = array Ph辿p to叩n t鱈nh kho畉ng c叩ch gi畛a 2 con tr畛 <ki畛u d畛 li畛u> *p1, *p2; p1 p2 cho ta kho畉ng c叩ch (theo s畛 ph畉n t畛) gi畛a hai con tr畛 (c湛ng ki畛u) Ph辿p to叩n s畛 h畛c tr棚n con tr畛 NMLT - Con tr畛 c董 b畉n 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 int array[3]; p1 p2= (0B 13)/sizeof(int) = 2 p2 p1= (13 0B)/sizeof(int) = +2
  • 23. VCVC && BBBB 2323 C叩c ph辿p to叩n kh叩c Ph辿p so s叩nh: So s叩nh 畛a ch畛 gi畛a hai con tr畛 (th畛 t畛 担 nh畛) == != > >= < <= Kh担ng th畛 th畛c hi畛n c叩c ph辿p to叩n: * / % Ph辿p to叩n s畛 h畛c tr棚n con tr畛 NMLT - Con tr畛 c董 b畉n
  • 24. VCVC && BBBB 2424 Truy xu畉t 畉n ph畉n t畛 th畛 n c畛a m畉ng (kh担ng s畛 d畛ng bi畉n m畉ng) array[n] == p[n] == *(p + n) Con tr畛 v m畉ng m畛t chi畛u NMLT - Con tr畛 c董 b畉n p 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 int array[3]; + 2 )(*
  • 25. VCVC && BBBB 2525 Con tr畛 v m畉ng m畛t chi畛u V鱈 d畛 nh畉p m畉ng NMLT - Con tr畛 c董 b畉n void main() { int a[10], n = 10, *pa; pa = a; // ho畉c pa = &a[0]; for (int i = 0; i<n; i++) scanf(%d, &a[i]); scanf(%d, &p[i]); scanf(%d, a + i); scanf(%d, p + i); scanf(%d, a++); scanf(%d, p++); } &a[i] (a + i) (p + i) &p[i]
  • 26. VCVC && BBBB 2626 Con tr畛 v m畉ng m畛t chi畛u V鱈 d畛 xu畉t m畉ng NMLT - Con tr畛 c董 b畉n void main() { int a[10], n = 10, *pa; pa = a; // ho畉c pa = &a[0]; for (int i = 0; i<n; i++) printf(%d, a[i]); printf(%d, p[i]); printf(%d, *(a + i)); printf(%d, *(p + i)); printf(%d, *(a++)); printf(%d, *(p++)); } a[i] *(a + i) *(p + i) p[i]
  • 27. VCVC && BBBB 2727 Truy畛n m畉ng 1 chi畛u cho hm Ch炭 箪! M畉ng m畛t chi畛u truy畛n cho hm l 畛a ch畛 c畛a ph畉n t畛 畉u ti棚n ch畛 kh担ng ph畉i ton m畉ng. NMLT - Con tr畛 c董 b畉n 10 11 13 14 15 16 17 18 19 20 21 22 23 24 int array[3]; int a[3]int a[3] int nint nxu畉t int a[]int a[] int *aint *a
  • 28. VCVC && BBBB 2828 Con tr畛 c畉u tr炭c Truy xu畉t b畉ng 2 c叩ch V鱈 d畛 NMLT - Con tr畛 c董 b畉n struct PHANSO { int tu, mau; }; PHANSO ps1, *ps2 = &p1; // ps2 l con tr畛 ps1.tu = 1; ps1.mau = 2; ps2->tu = 1; ps2->mau = 2; (*ps2).tu = 1; (*ps2).mau = 2; <t棚n bi畉n con tr畛 c畉u tr炭c>-><t棚n thnh ph畉n> (*<t棚n bi畉n con tr畛 c畉u tr炭c>).<t棚n thnh ph畉n>
  • 29. VCVC && BBBB 2929 Con tr畛 c畉u tr炭c G叩n hai c畉u tr炭c NMLT - Con tr畛 c董 b畉n struct PHANSO { int tu, mau; }; PHANSO ps1, *ps2; ps1.tu = 1; ps1.mau = 2; // ps1 = 1/2 ps2 = &ps1; ps2->tu = 3; ps2->mau = 4; // ps1 = 3/4
  • 30. VCVC && BBBB 3030 Bi t畉p l箪 thuy畉t Bi 1: Cho o畉n ch動董ng tr狸nh sau: float pay; float *ptr_pay; pay=2313.54; ptr_pay = &pay; H達y cho bi畉t gi叩 tr畛 c畛a: a. pay b. *ptr_pay c. *pay d. &pay Tin h畛c c董 s畛 2 - 畉ng B狸nh Ph動董ng