int b[10]; // dızbekti járiyalaw
int *t=b; // dızbektiń baslanǵısh adresin beriw
void f (int a) {/*... */} // funksiyanı anıqlaw
void (*pf) (int); // funksiyaǵa kórsetkishni járiyalaw
pf=f; // funksiya adresin kórsetkishke beriw
II. Ashiq jarıya túrde yaddıń absolyut adresin beriw:
Tırtıq *vp = (char*) 0 xB8000000;
Bunda 0 xB8000000- on altılıq ózgermeytuǵın san hám (char*)- túrge keltiriw ámeli bolıp, ol vp ózgeriwshin yaddıń absolyut adresindegi báyitlerdi tırtıq retinde qayta isleytuǵın kórsetkish túrine aylantırilishini ańlatadı.
III. Bos baha beriw:
int *suxx=NULL;
int *r=0;
Birinshi qatarda arnawlı NULL ózgermeytuǵını isletilingen, ekinshi qatarda 0 baha isletilingen. Eki halda da kórsetkish hesh qanday obiektke shaqırıq etpeydi. Bos kórsetkish tiykarınan kórsetkishni anıq bir obiektke kórsetip atırǵan yamasa joq ekenligin anıqlaw ushın isletiledi.
Iv. Dinamikalıq yadta new ámeli menen jay ajıratıw jáne onı adresin kórsetkishke beriw:
Int*n=new int; // birinshi operator
Int*m=new int (10 ); // ekinshi operator,,
Int*q=new int[10]; // úshinshi operator
Birinshi operatorda new ámeli járdeminde dinamikalıq yadta int ushın jetkilikli jay ajıratıp alınıp, onıń adresi n kórsetkishke juklenedi. Kórsetkishtiń ózi ushın jay kompilyatsiya waqtında ajratıladı.
Ekinshi operatorda jay ajıratıwdan tısqarı m adresine baslanǵısh baha -10 sanın jaylastıradı.
Úshinshi operatorda int túrindegi 10 element ushın jay ajıratılǵan jáne onıń baslanǵısh adresi q kórsetkishke berilayapti.
Yad new ámeli menen ajıratılǵan bolsa, ol delete ámeli menen bosatilishi kerek. Joqarıdaǵı dinamikalıq ózgeriwshiler menen baylanısqan Yad tómendegishe bosatiladi:
delete n; delete m; delete[] q;
Egerde yad new[] ámeli menen ajıratılǵan bolsa, onı bosatish delete[] ámelin ólshewi kórsetilmagan halda qóllaw kerek.
Yad bosatilganligiga qaramastan kórsetkishni ózin keyinirek qayta isletiw múmkin.
Kórsetkish ústinde ámeller:Kórsetkish ústinde tómendegi ámeller orınlawǵa bolatuǵın :
1) obiektke qurallı shaqırıq qılıw ámeli;
2) baha beriw ámeli;
3) kórsetkishke ózgermeytuǵın bahanı qosıw ámeli;
4) ayırıw ámeli;
5) inkrement hám dekrement ámelleri;
6 ) salıstırıw ámeli;
7) túrge keltiriw ámeli.
qurallı shaqırıq qılıw ámeli kórsetkish degi adres boyınsha jaylasqan bahanı alıw yamasa baha beriw ushın isletiledi:
tırtıq a; // tırtıq túrindegi ózgeriwshi daǵazası,
tırtıq *p=new tırtıq; // Kórseshkichni járiyalay otirip, oǵan
// dinamikalıq yaddan ajıratılǵan
// yaddıń adresin beriw
*p='b'; // p adresine baha jaylastırıw
a=*p; // a ózgeriwshisine p adresindegi bahanı beriw
Sonı belgilengenler etip ótiw kerek, yaddıń anıq bir jayındaǵı bir waqıttıń ózinde bir neshe hám hár túrlı túrdegi kórsetkishlerge beriw múmkin hám olar arqalı shaqırıq etilgende berilgendiń qıylı túrdegi bahaların alıw múmkin:
unsigned long int A=0 xcc77 ffaa;
unsigned short int *pint= unsigned short int*) &A;
unsigned char* pchar= ( unsigned char*) &A;
cout <
Ekranǵa hár túrlı bahalar baspadan shıǵarıladı :
cc77 ffaa ffaa aa
Ózgeriwshiler bir adresde jaylasqan halda pútin bahanıń túrli bóleklerin ózlestiredi. Bunda san manisiniń yadta «teskari» jaylasıwı inabatqa alınıwı kerek.
Eger hár túrlı túrdegi kórsetkishlerge bahalar berilsa, álbette túrge keltiriw ámelinen paydalanıw kerek:
int n=5;
float x=1. 0;
int *pi=&n;
float *px=&x;
void *p;
int *r, *r1;
px= (float*) &n;
p=px;
r= (int*) px;
r1=pi;
Kórsetkish túrin void túrine keltiriw ámelde mániske iye emes. Tap sonday, túrleri birdey bolǵan kórsetkishler ushın turni keltiriw ámelin orınlawdıń hájeti joq.dı (bosatiladi). Keyinirek, bul yad bólegi programma tárepinen basqa maqsette taǵı isletiliwi múmkin. Dinamikalıq yadqa tek kórsetkishler járdeminde shaqırıq qılıw múmkin. Bunday ózgeriwshiler dinamikalıq ózgeriwshiler dep ataladı hám olardı jasaw waqıtı jaratılǵan noqattan baslap programma aqırıǵa shekem yamasa ashiq jarıya túrde joǵatılǵan (baylanısqan yad bosatilgan) jayınasha boladı.
Kórsetkishlerdi járiyalawda oǵan baslanǵısh bahalar beriw múmkin. Baslanǵısh baha (initsializator) kórsetkish atınan keyin yamasa qawıs penenishinde yamasa '=' belginen keyin beriledi. Baslanǵısh bahalar tómendegi usıllar menen beriliwi múmkin:
I. Kórsetkishke ámeldegi bolǵan obiekttiń adresin beriw:
a) adresti alıw ámel arqalı :
int i=5, k=4; // pútkil ózgeriwshiler
Kórsetkish ústinen atqarılatuǵın arifmetik ámellerde avtomatikalıq túrde túrlerdiń ólshemi esapqa alınadı.
Arifmetik ámeller tek birdey túrdegi kórsetkishler ústinen atqarıladı hám olar tiykarınan, dızbek strukturalarına kórsetkishler ústinde atqarıladı.
Inkrement ámeli kórsetkishni dızbektiń keyingi elementine, dekrement bolsa kerisinshe, bir aldınǵı elementiniń adresine kóshiredi. Bunda kórsetkishtiń manisi sizeof () manisine ózgeredi. Eger kórsetkishtiń manisi k ózgermeytuǵın bahaǵa asırılsa yamasa kemeytirilse, ol k*sizeof () manisine ózgeredi.
Mısalı :
shor int *p=new short[5];
long *q=new long [5];
p++; // p manisi 2 asadı
q++; // q manisi 4 ke asadı
q+=3; // manisi 3*4=12 asadı
Kórsetkishlerdiń ayırması dep, olar ayırmasınıń tur ólshemine bóliniwine aytıladı. Kórsetkishlerdi óz-ara qosıw múmkin emes.
Shaqırıwlar :Shaqırıwlar daǵazada, kórsetilgen nomning sinonimi retinde isletiledi, yaǵnıy bir ózgeriwshige xar qıylı at menen shaqırıq qılıw imkaniyatın beredi. Shaqırıqtı turaqlı bahaǵa iye bolǵan kórsetkish dep qaraw múmkin. Shaqırıq tómendegishe daǵaza etiledi:
& ;
Bul jerde - shaqırıq kórsetiwshi bahanıń túri, '&' belgisi, odan keyin jazılǵan - shaqırıq túrindegi ózgeriwshi atı. Basqasha aytqanda, '&' belgisine adresti alıw ámeli dep ataladı.
Mısal :
Do'stlaringiz bilan baham: |