You are on page 1of 5

Ni dung

NGN NG LP TRNH C/C++


Nguyn Hi Chu Khoa Cng ngh thng tin Trng i hc Cng ngh (Bi ging tun 5-6)
1

Con tr v s hc a ch
Con tr Con tr v mng

Hm v chng trnh
Khai bo v s dng hm Cc cch truyn i cho hm

Khi nim con tr


Con tr l mt bin cha a ch ca mt bin khc, hoc a ch ca mt hm Nu p l con tr cha a ch ca bin x ta gi p tr ti x v x c tr bi p ly a ch ca bin x, ta dng php ton &: &x ly ni dung ca con tr, ta dng php ton *: *p
3 4

Con tr v s hc a ch

V d v con tr, php ton & v *


int a=2; // a l mt bin integer int *p; // p l mt con tr p = &a; // p cha a ch ca a cout << p << endl; // Kt qu in ra l a ch ca a cout << *p; // Kt qu in ra l 2

Cc php ton vi con tr


Php ton * v & Php ton gn: p = q; p v q l hai con tr Php ton tng gim a ch, t tng gim
p+n, p-n p++, p--, ++p, --p

So snh hai con tr: ==, >, >=, <. <=

Cp pht b nh cho con tr


cp pht b nh cho con tr, ta dng ch th new:
p = new <kiu> ; // cp pht 1 phn t p = new <kiu>[n] ; // cp pht n phn t

Gii phng b nh cp pht


cp pht b nh cho con tr, ta dng ch th delete:
delete p; delete[] p; // nu p c cp pht 1 phn t // nu p c cp pht n>1 phn t

V d:
int *p, *q; p = new int; q = new int[10]; // Cp pht 1 phn t // Cp pht 10 phn t
7

V d:
int *p, *q; p = new int; q = new int[10]; delete p; delete[] q; // Cp pht 1 phn t // Cp pht 10 phn t // Gii phng p // Gii phng q
8

Con tr v mng mt chiu


Con tr tr n mng cng tng t tr n cc bin khc, tc gn a ch ca mng (chnh l tn mng) cho con tr a ch ca mng l a ch ca thnh phn u tin (0) nn a+i s l a ch thnh phn th i ca mng Gi s c mng int a[10]:
a[i] chnh l *(a+i) a+i chnh l &a[i]
9

Con tr v mng hai chiu


V d: float a[2][3], *p;
a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] a a+1

p = a; a[i][j] ~ *(p+3*i+j)

10

Mng con tr
Khai bo:
<kiu> *<tn mng con tr>[<s lng>];

V d:
int *a[10]; // Mng 10 con tr s nguyn

Hm

V d: khai bo tham s ca hm main:


main(argc, argv) int argc; char *argv[];
11 12

Khi nim v hm
Hm l mt chng trnh con Hm c th nhn hoc khng nhn i s Hm c th tr li kt qu hoc khng Mt chng trnh C cha t nht mt hm (main) v c th c nhiu hm khc Hm gip cho vic phn on chng trnh thnh nhng mun c lp
13

c trng ca hm
Nm trong hoc ngoi vn bn c chng trnh gi n hm. Trong mt vn bn c th cha nhiu hm, c gi t chng trnh chnh (main), t hm khc hoc t chnh n ( quy), Khng lng nhau. C 3 cch truyn gi tr: Truyn theo tham tr, tham bin v tham tr.
14

Khai bo hm
Khai bo hm:
<kiu gi tr tr li> <tn hm>(d/s kiu i) ;

nh ngha hm
<kiu gi tr tr v> <tn hm>(danh sch tham i hnh thc) { khai bo cc b ca hm ; // ch dng cho hm ny dy lnh ca hm ; return (biu thc tr v); // c th nm u trong dy lnh. }

V d:
int myfunction(int, long); int rand100() ; void showtext(char *); void nothing();

15

16

V d
double luythua(float x, int n) { int i ; // bin ch s double kq = 1; // lu kt qu for (i=1; i<=n; i++) kq *= x; return kq; }
17

Li gi hm
<tn hm>(danh sch tham i thc s); V d: Vit v thc hin mt chng trnh n gin c s dng li gi hm

18

Hm vi i ngm nh
Khai bo: <kiu hm> <tn hm>(d1, , dn, dnd1=gt1, , dndm=gtm); Cc i ngm nh phi c khai bo lin tc v nm cui danh sch i V d:
int function(int, char, int=0, float=1.0); int=0 v float=1.0 ch ra hai i vi gi tr ngm nh
19

Khai bo hm trng tn (Overlay)


int max(int a, int b) { return (a > b) ? a: b ; } int max(double a, double b) { return (a > b) ? a: b ; }

20

Bin tham chiu


Bin tham chiu int i; int &j=i; // j l mt cch tham chiu khc // ca bin i j = 5; // Sau lnh gn ny i cng c gi tr 5 Bin tham chiu phi c khi to khi khai bo
21

Cc cch truyn i cho hm


Truyn theo tham tr Truyn theo tham chiu Truyn theo con tr

22

Truyn theo tham tr


void swap1(int x, int y) { int t ; t = x ; x = y ; y = t ; } main() { int x=5, y=6; cout << x = << x << y = << y << endl; swap1(x, y); cout << x = << x << y = << y << endl; }

Truyn theo tham tr


void swap2(int *x, int *y) { int t ; t = *x ; *x = *y ; *y = t ; } main() { int x=5, y=6; cout << x = << x << y = << y << endl; swap2(&x, &y); cout << x = << x << y = << y << endl; }
23 24

Truyn theo tham chiu


void swap3(int &x, int &y) { int t ; t = x ; x = y ; y = t ; } main() { int x=5, y=6; cout << x = << x << y = << y << endl; swap3(x, y); cout << x = << x << y = << y << endl; }
25

Tham tr Khai bo i

Tham chiu

Tham tr

void swap(int x, void swap(int &x, void swap(int *x, int y) int &y) int *y) t = *x; *x = *y; *y = t; swap(&a, &b); a, b c thay i
26

Cu lnh t = x; x = y; y = t; t = x; x = y; y = t;

Li gi Tc dng

swap(a, b);

swap(a, b);

a, b khng thay a, b c thay i i

Cc vn cn nh
Con tr: Cch khai bo, s dng, cp pht v gii phng b nh Mi lin quan gia con tr v mng Khai bo, xy dng v s dng hm Phn bit cc cch truyn i khc nhau cho hm i ngm nh, hm trng tn
27

Bi tp
Cc bi tp t s 1 n s 42 ca chng 4 (T trang 140-144)

28

You might also like