con tro trong c++

38
Hôm nay đang học Oracle nhưng đêm qua lúc 3h hứa với 1 người em là sẽ vi! 1 "ài hướng #$n v% c&n !r'( ) mức c*c +, #- hi.u( c*c +, đ/y đ0( !h u !&2n !&àn " "4i c&n !r' !r&ng 6 và 6778 9, v:y m,nh quy! đ;nh #ành !&àn " "u<i chi%u nay ch& " này8 Hy vọng sẽ là 1 "ài vi! !ruy%n !h/n( c*c +, #- hi.u ( và đ/y đ0 h! mức c= langman c= !h.? 6ha@ A B C nhớ C nhớ v:! lD C nhớ 5& H,nh 1 chúng !a !hEy nhFng !hứ đưGc gọi là " nhớ( " nhớ v:! lD( s) n m ngh;ch hI hI( c2i này là !hi! "; "Jn à H,nh K là mô h,nh " !< chức " nhớ 5& mức +h2i niLm A8 C nhớ 5& là g,M Nu5n lD " nhớ v:! lD >cE@ @h2!( !hu h i? là 1 vEn đ% c*c +, @hức !J@ !r&ng hL ! !Pnh ( đ. "5& đ5m s* hiLu qu5( đúng đ n( an !&àn ch& viLc qu5n lD đ=( hL đi%u hà #*ng lên c2c vRng nhớ 5&

Upload: chu-quang-vien

Post on 03-Nov-2015

20 views

Category:

Documents


0 download

DESCRIPTION

Con tro trong C++

TRANSCRIPT

Hm nay ang hc Oracle nhng m qua lc 3h ha vi 1 ngi em l s vit 1 bi vit hng dn v con tr, mc cc k d hiu, cc k y , thu ton ton bbi cnhv con tr trong C v C++. V vy mnh quyt nh dnh ton b bui chiu nay cho bi vit ny. Hy vng s l 1 bi vit truyn thn, cc k d hiu , v y ht mc c th (ht mc langman c th)

Chap I : B nh

B nh vt l

B nh o

Hnh 1chng ta thy nhng th c gi l b nh, b nh vt l, s nm nghch thoi mi h h, ci ny l thit b bn Hnh 2l m hnh b t chc b nh o mc khi nim

I. B nh o l g?

Qun l b nh vt l (cp pht, thu hi) l 1 vn cc k phc tp trong h thng my tnh , bo m s hiu qu, ng n, an ton cho vic qun l , h iu hnh xy dng ln cc vng nh o

Trong h thng my tnh, b nh o (ting Anh: virtual memory) l mt k thut cho php mt chng trnh ng dng tng rng mnh ang c mt di b nh lin tc (mt khng gian a ch), trong khi thc ra phn b nh ny c th b phn mnh trong b nh vt l v thm ch c th c lu tr c trong a cng. So vi cc h thng khng dng k thut b nh o, cc h thng dng k thut ny cho php vic lp trnh cc ng dng ln c d dng hn v s dng b nh vt l thc (v d RAM) hiu qu hn.

Lu rng khi nim "b nh o" khng ch c ngha "s dng khng gian a m rng kch thc b nh vt l" - ngha l ch m rng h thng b nh bao gm c a cng. Vic m rng b nh ti cc a ch l mt h qu thng thng ca vic s dng cc k thut b nh o. Trong khi , vic m rng ny c th c thc hin bng cc phng php khc nh cc k thut overlay hoc chuyn ton b cc chng trnh cng d liu ca chng ra khi b nh khi cc chng trnh ny khng trng thi hot ng. nh ngha ca "b nh o" c nn tng l vic nh ngha li khng gian a ch bng mt di lin tc cc a ch b nh o "nh la" cc chng trnh rng chng ang dng cc khi ln cc a ch lin tc.(theo wiki)

II. a ch o l g?

Trong ci vng b nh o kia, cho tin trnh d s dng, h iu hnh d hiu, 2 thng ny cng nhau quy nh rng, chi nh ra theo tng byte, v nh s t1n htci nh no , c nh s l i th ta ni a ch ca ci nh l i

Gi s ti c bin a khai bo nh sauint a;v a nm trong ci th452321ti ci vng nh trn, vy a c a ch l452321

tin trnh hiu l th, cn h iu hnh th hiu hn 1 t : ", ci a ch ny tng ng vi ci nh no trong thanh ram m ta ang qun l, he he he he he he"

thm 1 t na l : ngi ta ko dng h thp phn (decimal, h m c s 10) vit a ch u, nn thui, chuyn qua h thp lc phn (hexadecimal ,h m c s 16nha )452321h c s 10, chuyn li thnh6E6E1 h c s16 trong C ti vit l 0x6E6E1 ngn ng ASM ti vit l 6E6E1h cao hn)+ trong windows 32bit th ko gian a ch o c a ch t 00000000h tri di n 7fffffffh+ Bn cn hiu n ch l o, ko phi vng no cng c b nh vt l tht u nh,+ Khi nim v b nh phn on : segment offset bn hy b qua i, v n qu c ri

III. V d vui v a ch o lm v d vui ny bn cn 2 ci l+ pokemon :http://forums.congdongcviet.com/atta...3&d=1282105506+ armoney active code ldot68:http://forums.congdongcviet.com/atta...1&d=1282119896

Khi chi game, ta thy im hin ln trn mn hnh, vy th chc chn n s c lu tr u trong b nh v s c a ch VA c th. Dn lp trnh chng ta gi chng lbin, v c a ch c th, hj hj

thay i im t pha app ca mnh, u tin chng ta phi tm c a ch VA ca bin im ny nh.

tm c a ch ca bin ny ko qu kh vi 1 tool c bn nh artmoney (Cha c download y, active code ldot68) :

Bc 1u tin bt pikachu ln chi ly 20 im v bt artmoney ln,u tin l chn tin trnh, pikachu y c ci tn l D4Sri click voSearchln 1 hp thoiBc 2click vo... chn kiu d liu, mnh hack nhiu ln ri nn bit n l kiu float 4byte, nu cha hack bao gi, cc bn c th ALL tm vi mi loi d liuBc 3chng ta s thu c 1 lot a ch ang cha gi tr 20, by gi chng ta vo trong game chi cho im tr thnh 40 ri vo artmoney, click vo ntFilterg gi tr mi l 40 ri okBc 4

Vy l ta bit a ch ca bin im l004B6088

Attached Thumbnails

Chap II : Tng quan

I. Ci nhn vn A: Con tr l g, ch hiu ci kh kh g c, nghe ni kh lm.B: Hoc c bn hc 2,3 bui xong ni , i tri d t y m,

th 1 i vi A : Con tr d t y m, ch cn bn theo di y tut ny, lm theo hng dnth 2 i vi B : thi i nh pa, c xong ci bi vit ny , ri hng kt lun nha

1. con tr ch l 1 bin nguyn bnh thngcon tr ch l 1 bin nguyn bnh thng nh cn ng hp sa bn n l 1 bin, bin nguyn gi tr ca n lnguynn cha ci c gi la ch om ta ni bn trn bnv d nh l :0x6E6E1hoc0x4B6088hoc454321 bn sau ny nhad bn khai bovoid *p;char *p;hay ldouble *p;long long *p;th p vn l 1 bin, n l 1 bin, bin nguyn,

2. trong h iu hnh 32bit th n c di l 32 bit,trong windows 32bit (xp, vista, 7) th a ch o c di l 32 bit, tng ng vi s hexa c 8 ch s,

v sao li ch c 32bit ?v n cn 32bit l va ch tr ht vng nh o

II. Con tr dng lm g?

Vng, ti cha tng bao gi ngh n 1 cu hi n gin m tuyt vi nh ny v ti lun . Ni th no nh, ti lun.. ti c tin tay l dng, hp l ti dng, cn thit ti dng m cho n nay ti cha h ngh n cu tr li cho cu hiCon tr dng lm g nh+ , n gin, ng nh ci bn cht ca n th n ch tr lung tung trong vng nh o ca tin trnh hin ti+ c ngi ni vi ti dng lm tham bin cho hm, ti hok ni g c, v ci cu ni ng th ng vi cc bn mi thui, ch i su vo vn th li sai l ra (ti sao xem tip cc chp sau nha)Ti ko th ni r 1 cch n gin ngay t y l con tr lm g cho bn, thm ch c sau ny cng thNhng ti tin chc rng mnh s mang li cho cc bn nhng s tuyt vi m ti bin n t cch s dng con tr

qun , c 1 iu ny cc k quan trng : con tr ch l 1 cng c, l 1 kiu d liu, ta ci t cc gii thut, ch ko phi l 1 gii thut hay thut ton, nn cu ni nh l "dng con tr gii bi A", "gii bi tp B bng con tr" l hon ton sai.Ni ng phi l "gii bi tp C s dng con tr"

Chap III : Khai bo

Ch ch, dn nhp tht l di di, nhng bn i, hy chc chn vi ti rng bn cm thy ok 2 chap u (xin ng c lt qua n vi v th ) v l tin cc k quan trng bn c th vt qua khi mc c bn sau ny

I. Cu trc khai bokieudulieu *tenConTro;

kiu d liu y c th l+ kiu d liu c sn (built-in data type ) : int , char , void , double , long , ......+ kiu d liu cu trc do ngi dng nh ngha (user-defined data type) : struct , union+ kiu d liu l lp do ngi dng nh ngha (C++)+ kiu d liu dn xut + kiu con tr hm (cc chp adv nh)

nhc li ln na, kiu d liu ny l kiu d liu ca ci vng nh m n tr n nha

tenConTro : l tn ca con tr nhara khi cu khai bo ri thtenConTros l tn ca con tr,int *a;ra khi cu khai bo ny ta s ni :a l con tr

II. V dPHP Code:int*a,*p;ta s c 2 con tr a, v pxin ch cch ti vit nh+ a, p l con tr+ *a,*p khng phi l con tr+ k t * ng gn a, ng gn p, ti sao vy?

III. Ch Ch 1 :PHP Code:int*a,b;//thalcontr,blbinnguyn

Ch 2:PHP Code:int*a,b;//thalcontr,blbinnguyn//vcchvitnhnycckngghtvgyratonhiulnngght

Ch 3:PHP Code:void*a;//ng,hontonccontrvoidnhaAttached Thumbnails

Chap IV : Khi to

I. Khi to l gC 1 s bn s l lm v ci tiu khai bo vi khi to nghe c v ging nhau..... Nhng bn i, khai bo (declared, register) v khi to(initialize) hon ton khc nhau nhaint a; // khai bo bin aint b=2; //khai bo bin b v kt hp vikhi to gi tr cho bin b bng 2

Khi ta khai bo 1 bin th cu lnh u tin thit lp gi tr cho bin th l khi to. Trong C03, C++03 tr ln khi ta khai bo 1 bin local, cha khi to gi tr m em s dng th s pht sinh li runtime .V d on code sau vn dch c, vn run nhng khi chy s tung ra li "Run-Time Check Failure #3 - The variable 'a' is being used without being initialized."PHP Code:#includevoidmain(){inta;if(a==2)printf("ok");//clirun-timesinhradngny}

II. Khi to gi tr cho bin con trcu trc khi to:TnConTr= aCh;

+ trong tn con tr l tn ca bin con tr+ a ch l vng a ch m ta mun tr n

V d

Ch 1:Bn thn p cng l 1 bin (nguyn), p cng nm trong b nh, cng c a ch ring bn

Ch 2:Ton t& y chnh xc phi gi l unary operator&, ton t&1 ngi, n hon ton khc vi ton t&2 ngi (bitwise ). Ton t&1 ngi ny dng ly a ch ca 1 bin . Trc khi ng n l thuyt v con tr, chng ta tng s dng ton t ny ri :scanf("%d",&a);.PHP Code:a=3&2//tont&2ngi,ltontdngbitwisep=&a;//tont&1ngi,ltontlyachca1binscanf("%d",&a)//tont&1ngi,ltontlyachca1binCh 3:C th vit v d trn ngn gn li thnhPHP Code:inta=1987,p=&a;

III. C c iu g sau khi khi to nh v d trn

+Khi gi tr nm trong p l a ch ca a th ta ni p tr vo a

+ Lc ny th *p hon ton tng ng vi a , ngi ta coi *p l b danh ca a , thao tc vi *p cng nh thao tc vi a, thao tc vi a cng nh thao tc vi *pv d :a. cu lnha=2;hon ton tng ng vi cu lnh*p=2;b. cu lnh a++; hon ton tng ng vi (*p)++// ch khc vi *p++ nh, phi cho *p vo trong ng m ngoc v ton t * c u tin thp hn ++c. cu lnhb=a+c-9;hon ton tng ng vi cu lnhb=(*p)+c-9;d. cu lnh(*p)=(*p) -1227;hon ton tng ng via=a-1227;

+Lc ny cu lnhscanf("%d",&a);ta c th thay bngscanf("%d",p);

Ch : Ton t *Ton t * y l ton t 1 ngi , tc dng l truy xut n nh m con tr ang tr n

trnh nhng hiu lm ko ng c, khi c s nhp nhng m bn ko th on c, bn hy thm cp()nha(*p)++a+(*p)*c // thm vo cho n sng sa code ra

IV. Mt s trng hp

1. Hiu lm v cch cho p tr vo a2. Cng tr vo 1 bin3. Con tr a cp4. Con tr tr n nh bit5. Con tr voidCon tr void l 1 con tr c bit, thch tr i u th trPHP Code:intham(){return1;}

voidmain(){inta;void*p,*q;p=ham;q=&a;}

Attached ThumbnailsChap V : Kiu d liu con tr v cc php ton trn con tr

I. Kiu d liu con trKhi ta vit int *p,b; chng ta lun vit * gn a, v sao? v * ny l ca p, p l con tr, b ko phi con trkiu d liu ca b l intkiu d liu ca p l g ???????????????? (1)

bn xem li hnh nh ca mc 4. Con tr tr n nh bit thyp=(int *)....; (2)

-----------------t (1) v (2) chng ta c th nhn thy iu ny, kiu d liu ca p l (int *)

Tht ra chng ta tng gp kiu d liu con tr dng ny ri. V d khi tra MSDN ti c c ci ny :PHP Code:char*gets(char*str);Ti rt tin vo cch vit chun mc ca Microsoft, v th ti cng khuyn cc bn code theo chun mc ny :+ trong cu lnh khai bo con tr ti vit * gn tn con tr+ khi vit kiu d liu ti vit * ng gn kiu d liu c bn : c th kiu d liu tr v ca hm, tiu v nguyn mu hm+ cu lnh p kiu th manual theo bn mun, c th vit cch ra cho thong code

cc bn c th xem li nguyn mu hm gets bn trn hiu thm v cch vit code ny

II. Cc php ton trn con tra. Php gnPhp gn i vi con tr th tham kho phn khi to nhng c 1 vi yu t xu y :+ Tt c cc loi con tr u c php gn+ Php gn vi con tr yu cu v tri l 1 con tr v v phi l 1 a ch+ Php gn yu cu s tng xng v kiu d liu, nu ko tng xng chng ta phi p kiuv d p=(int*)8232;p c kiu d liu l int*cn 8232 l 1 hng s nguyn, nn phi p kiu v int* ri thc hin php gn+ Php gn vi 1 con tr kiu void ko cn thit phi tng xng hon ton v kiu d liu, void* c th tng ng vi tt c (nh v d chp trc), thm ch l vt cp (vt hn 2 cp) nh v d sauPHP Code:void*p,**q;p=&q;

b. Php so snhPhp so snh ngang bng dng kim tra 2 con tr c tr vo cng 1 vng nh hay khng, hoc kim tra 1 con tr c phi l ang tr vo NULL hay khng (trong trng hp cp pht ng, m file, m resource,........)

Php so snh ln hn nh hn : > , < , >= , >> gi tr cha trong p + sizeof(kiu d liu ca bin m p tr n)+Khng c php tng gim trn con tr void+Khng c php tng gim trn con tr hm+Khng c php cng 2 con tr vi nhau+Php tr 2 con tr tr v lch pha gia 2 con tr

Vy ta c kt lun nh sau :kiu d liu tr n c tc dng xc thc s r rng tt c cc php ton trn con tr (bao gm c php = * &)

III. ng dngMnh demo trc mt ng dng ca vic thao tc cc php ton trn con tr

ng dng duyt xuPHP Code:#include#include#include

voidmain(){charxau[200];

printf("Nhapxau:");scanf("%[a-zA-Z]",xau);//nubnchahiudnglnhnyhyxembivitnyhiusuthmvscanf//http://forums.congdongcviet.com/showthread.php?t=34612

//Vithoaxu(duytxui)printf("Viethoa:");for(char*p=xau;*p;p++)//ptrnxu;kttrnkhcNULL;p=p+1printf("%c",toupper(*p));

//vitysl(char*p=xau;*p!=NULL;p++)//vitngngnlichoco

//Vitongcxu(duytngc)printf("\nDaonguocxau:");for(char*p=xau+strlen(xau)-1;p>=xau;p--)//choptrvotcuicng;pcnlnhnxau;p=p-1printf("%c",*p);

getch();}ng dng i s thc thnh s nh phnCch 1 : C stylePHP Code:#include#include

voidnhiphan(floatn){for(inti=0,*temp=(int*)(void*)&n;i1?nhiphan(n>>1):0;printf("%d",n&1);}

voidnhiphan(floatn){nhiphan(*(unsigned*)(void*)&n);}

voidmain(){nhiphan(3.9f);getch();}ng dng tm (s float ln hn ko) nh nhty chnh l s00000000 00000000 00000000 00000001PHP Code:#include

intmain(){floatx=0;char*p=(char*)&x;(*p)|=1;std::cout