Caht
Bizim sorğumuz
Rate my site
Cavabların ümumi miqdarı: 10
Statistika
[ New messages · Members · Forum rules · Search · RSS ]
  • Page 1 of 1
  • 1
Faydalı Məlumatlar bazası » C+ » С+ programlaşdırma haqqında dərslik » С+ programlaşdırma haqqında dərslik
С+ programlaşdırma haqqında dərslik
PcmasterTarix: Wednesday, 2010-08-11, 2:32 PM | Mesaj # 1
Lieutenant colonel
Qurup: Administrators
Mesaj: 147
Etibar: 0
Vəziyyət: Offline
C dili 70-ci ilde Bell laboratoriyasini emekdasi Denis Ritci terefinde yaradilmisdir.Bu dil evvelce yalniz PDP-11 EHM-da UNIX emeliyyat sisteminin reallasdirilmasi ucun istifade olunurdu.Sonralar ise bu dil basqa emeliyyat sistemlarinde de istifade olunmaga baslandi.

C yuksek seviyyeli assembler dili adlanadirila biler.Bele ki, bu dilin komeyile proqramci komputerin daxilinde – bitler , baytlara , registerlere ve xarici qurgulara muraciet etmek imkani qazanir.C dili sistem proqramlarin , kompilyator ve emeliyyat sistemlerinin yaradilmasina imkan verir.

C dili nisbeten mobil dildir.Bele ki bu dilde konkret komputer ve emeliyyat sisteminden yazilmis proqrami ya minimal deyisiklikle , ya da

hec bir deyisiklik etmeden basqa k komputer ve ya basqa emeliyyat sistemine kecirmek olar.deyilenler C-nin bir cox reallasmasinda esas rolu kitabxanalara da aiddir.c hecmine gore olduqca kicikdir.Onun gucunun boyuk hissesi proqramci terefinde yaradilan ve kompilyatorun desteklediyi kitabxanadadir.Meselen , daxiletme ve xaricetme emeliyyatlari dilinin bir hissesi deyil.Bu emeliyyatlar stdio ( standart daxiletme/xaricetme ) kitabxanasindan secilir.

1980-ci ilin evvelerinde ise hemin Bell laboratoriyasinin emekdasi Byar Straustrup terefinden obyektyonlu proqramlasdirma ucun nezerde tutulan C dillinin genislenmesi yarandi.Evvel bu dil ˝ C sinifleri ˝ adlandirildi.1983-cu ilde ise Rik Massitti bu dile ˝ C++ ˝ ( Si –plyus-plyus ) adini verdi.C++ dili C dilinin genislenmesi oldugundan , C dilindeki proqrami C++ dilinin kompilyatoru emal edir.

C++ dilinin genis yayilmasina baxmayaraq evveller bu dil ucun standartlar yox idi.bir nece ilden sonar ise bu dilin muellifi B. Straustrupun rehnerliyi ile yaradilan AT&TC++ release 2/0 standart kimi qebul olundu.Sonra ise C++ dilinin tekminlesmis 3.0 versiyasi meydana geldi.Hal-hazirda ise Amerikanin milli Santdartlar institutunda ( ANSI ) C++ (X3J16) dili uzre komite movcudur.Indiye kimi ANSI komitesinin WG21 isci qrupu terefinden standartin bir nece versiyasi buraxilmisdir. Bu dil uzre Borland firmasinin Turbo C++ ve Borland C++ kompilyatorlaridan genis istifade olunur.C++ dilinde proqramlarin tertibinde Borland C++ 3.1 , Turbo C++ 1.01 , Borland C++ 4.0 , Borland C++ 4.5 , Borland C++ 5.01 , kimi inteqrallasmis muhitlerden cox istifade olunur.

Teqdim edilen dress vesaitinde C++ dilinin demek olar ki , butun prinsip , vasite ve mexanizmi system proqram noqteyi – nezerinde aciqlanir.Ders vesaitinde bu dilin komeyi ile proqramlasdirmanin esas elementleri arasdirilir.ders vesaitinden C++ dilini ve bu dilin esasindda system proqram teminatinin bezi elementlerinin oyrenmek isteyenler istifade ede bilerler.

 
PcmasterTarix: Wednesday, 2010-08-11, 2:33 PM | Mesaj # 2
Lieutenant colonel
Qurup: Administrators
Mesaj: 147
Etibar: 0
Vəziyyət: Offline
Sistem proqramlasdirma elmi haqqinda

Bu fenn sistem proqramlarla elaqelidir.Sistem proqram dedikde komputerin islemesi ile elaqedardir.Umumiyyetle komputerde istifade olunan proqramlar 2 yere bolunur.

1.Sistem proqramlar 2.Tetbiqi proqramlar

.

Sistem proqramlara emeliyyat systemleri drayverler xidmet proqramlari translyatorlar ve s.daxildir.

Tetbiqi proqramlara ise muxtelif meqsedler ucun nezerde tutulan proqramlardir.Bura metin redaktorlari , cedvel redaktorlari , verilenler bazasinin idareetme sistemleri ve s. daxildir.

Emeliyyat sistemi komputerin isini ve komputerle istifadeci arasinda elaqeni yaradan sistem proqramdir.

Emeliyyat sistemi 3 novu movcuddur.

1).Bir meseleli 2).Cox meseleli 3).Sebeke

Translyator assembler , interpritator ve konpelyator olmaqla 3 qrupa bolunur.

Assembler dilinde yazilan proqramin translyasiyasi ucundur.

Interpritator konpelyatordan ferqli olaraq ilkin proqram setir–setir oxunur ve obyekt modulu yaratmir.sistem proqramlarinin yaradilmasinda en cox istifade olunan diller assembler ve C dilidir

 
PcmasterTarix: Wednesday, 2010-08-11, 2:33 PM | Mesaj # 3
Lieutenant colonel
Qurup: Administrators
Mesaj: 147
Etibar: 0
Vəziyyət: Offline
C++ dilinde proqramlarin icra olunma merheleleri

C++ dilinde proqramlasdirma haqqinda tesevvur almaq ucun asagidaki sade bir proqrama baxaq:

Misal1.˝ Milli Aviasiya Akademiyasi ˝ sozunu displeyine cixaran proqram.

//MAA.CPP-proqram faylinin adi

#include

Void main( )

{

cout << ˝ n Milli Aviasiya Akadeniyasi n˝;

}

Proqramin birinci setri ΄//΄ simvollar cutu ile baslayib , gorunmeyen ˝ setrin sonu ˝ simvolu ile qurtaran birsetirli serhi gosterir.

Proqramin ikinci setrinde preprosessorun # include direktivi yerlesir. Direktiv kompilyatora proqram metnine iostream.h faylinin terkibine elave etmek melumatini verir. Bu deriktiv verilenlerin standart axinla daxiledilmesini ve xaricedilmesini te

min edir. Gosterilen vasiteler iostream.h adli faylda yerlesir. Burada ˝ I ˝ ( input ) – daxiletme , ˝ o ˝ ( output ) – xaricetme , stream – axin , ˝ h ˝ ( head ) -basliq demekdir. Susmaya gore standart axinli xaricetme displeyin ekranina xaric etmeni , standart axinli daxiletme ise verilenlerin klaviaturadan daxil edilmesini temin edir.

Proqramin novbeti hisseleri ise bas funksiyanin tesviridir.Bu bas funksiyanin basligi ile baslayir:

void main ( )

C++ dilinde istenilen proqram yalniz bir main adli bas funksiyadan teskil olunur. Proqramin icrasi buradan baslayir. void spesifikator adlanir ve main funksiyasinin yerine yetirilmesi neticesinde hec bir qiymet qaytarilmadigini gosterir. main – den sonar moterizede parametrlerin siyahisi da ola biler. Bu msalda parametrler lazim deyil ve siyahi bosdur.

Ixtiyari finksiyanin govdesi fiqurlu moterizede olan tesvir , teyin ve operatorlardan ibaretdir. Her bir tesvir , teyin ve operator ˝ ; ˝ simvolu ile qurtarir. Burada bas funksiyanin govdesinde tesvir , teyin yoxdur ve yalniz informasiyanin displeyin ekraina xaric etmek ucun cout << ˝n Milli Aviasiya Akademiyasi n ˝; operatoru var. Informasiya xaric olunmaq ucun << emeliyyati vasitesi ile cout obyektine oturulur. Bu halda ˝n Milli Aviasiya Akademiyasi n ˝ ; setridir ( setir sabiti ) . C++ dilinde dirnaq isaresi daxilinde olan ixtiyari simvollar ardicilligidir. Bu simvollar da ola biler. Meselen , burada ΄n ΄ - idareni ekranin novbeti setrinin baslangicina oturen idareedici simvoldur. Qeyd edk ki , binary emeliyyatlarda << simvollar cutu sola surusdurmedir.

 
PcmasterTarix: Wednesday, 2010-08-11, 2:34 PM | Mesaj # 4
Lieutenant colonel
Qurup: Administrators
Mesaj: 147
Etibar: 0
Vəziyyət: Offline
MASSIVLER

Bildiyimiz kimi massiv strukturulasmis eyni tipli elementlerden teskil olunaraq yaddas sahesini tutur.Massivler indekslerinin sayina gore bir,iki ve cox olculu olur.bir olculu massivin tesvir formati asagidaki kimidir.

elementlerin_tipi ad [ sabit_ifade];

Burada -identifikator, sabit_ifade – ise massivin olcusunu, yeni massivin elementlerinin sayini teyin edir.Bezi hallarda ise massiv elementlerinin sayi olmadan,yeni sabit_ifadesiz tesvir olunur.Meselen,massiv

int D [9 ] ;

Kimi tesvir olunub.Yeni 9 tam elementlerden ibaret D adli massiv élan olunub.Massivin indeksi sifirdan baslayir ve kvadrat moterizede massivin olcusu gosterilmeye de biler.Misallar :

char CH [ ] = { 'A' ,'B' ,'C' , 'D' } ; // 4 elementden ibaret massiv

int IN [8] = { 10 ,20 ,30 ,40 ,50 } ; // 8 elementden ibaret massiv

char STR [ ] = " ABCD" ; // 5 elementden ibaret massiv

Bu misallarda CH massivinin elementlerinin sayini kompilyator inisializasiya siyahisindaki elementlerin sayina gore teyin edir.IN massivinde 8 element olmasina baxmayaraq , yalniz 5 element baslanciq qiymet alir.STR massivinin 5-ci elementi ,yeni STR [ 4 ] ' '-a beraber olur.Kvadratmoterizede sabit ifade gosterilmezse massivin teyininde baslangic qiymetlerinin olmasi vacibdir.

Birolculu massivlerin emalina dair nece misala baxaq.

Misal 1. Heqiqi elementlerden tewkil olunmus massivin elementlerini ededi ortasinin tapilmasi.

#include

#include

void main( )

{ const n=10;

int I ; double B[n], sb;

clrser( );

for (i=0 ;i

}

Proqramda massivin olcusunu tapmaq ucun sizeof( ) emeliyyatinda istifade olunur.sizeof (A) – in neticesi A massivinin yaddadaki olcusunu

( 20 bayt ) , sizeof (A[0]) – ise A massivinin bir elementinin olcusudur ( 2 bayt ) . nsizeof(A)/sizeof(A[0]) – ifadesi ile massivin elementlerinin sayi teyin olunur.

Coxolculu massivler.dilin sintaksisine uygun olaraq , coxolculu massivin elementleri massivdir. Cox olculu massivin teyini umumi halda tip , olcu ve her bir olcunun sayi haqqinda melumatlari ozunde saxlayir:

Tip massivin_adi [K1][K2] . . . [KN];

Burada tip – esas ve ya toreme tip, maasivin_adi – identikikator, N – massivin olcusu, KN – ise massivde elementlerin sayidir.

Meselen:float R [7] [5] ; operatoru 7 elementden ibaret massivin élan edir ki , bu element her biri 5 heqiqi ededden ibaret massivdir.

Meselen:

Int MASSIV [4] [3] [6];

MASSIV 4elementden ve her biri ikiolculu massivden teskil olunmus 3 olculu massivdir.

Indi ise dersliyin birinci hissesinde verilen asagidaki misala baxaq.

Misal 3.A (n,m) matrisinin setir elementlerinin hasillerinin cemini hesablayan alqoritmi tertib etmeli.Qoyulan meseleni bu sekilde ifade etmek olar:

S = �?��?� AIJ

 
PcmasterTarix: Wednesday, 2010-08-11, 2:35 PM | Mesaj # 5
Lieutenant colonel
Qurup: Administrators
Mesaj: 147
Etibar: 0
Vəziyyət: Offline
#include

#include

void main( )

{ clrser( );

const n=3 m=4;

int i,j,Z,S,A[n][m];

printf("n Massivin elementlerini daxil edinn");

for(i=0 ; i

for(j=0 ; j

{ scanf("%d" , & a[i][j]);

printf("A[%d][ %d]= %dn" , i , j ,A[i][j];

}

S=0;

for(j=0; i

{

For(j=0; j

Z=Z*A[i][j];

S+=Z

}

printf("nNetice%d",S);

}

Misal 4. 0 – dan 99 – a kimi tesadufi ededlerden tewkil olunmuw massivin elementlerinden maksimumunun tapilmasi.

#include

#include

#include

#include

#define n 5

Void main ( )

{ int i , j ImaxA , JmaxA ,A [n] [n] ;

clrser( );

randomize ( );

for(i=0 ; i

{ for(j=0 ; j

{ A [i] [j]= rand ( )%100:

Cout <<setw (6)<<A [i] [j]:

}

Cout << endl;

}

ImaxA = JmaxA = 0 ;

for(i=0 ; i

{ for(j=0 ; j A[ImaxA] [JmaxA])

{ ImaxA =i , JmaxA = j: }

}

Cout<<˝Maksimal qiymet :

[˝<<ImaxA<<˝][˝<<JmaxA<<˝] = ˝A [ImaxA][ JmaxA];

}

 
PcmasterTarix: Wednesday, 2010-08-11, 2:36 PM | Mesaj # 6
Lieutenant colonel
Qurup: Administrators
Mesaj: 147
Etibar: 0
Vəziyyət: Offline
Proqramda yeni elementlerden istifade edilib.bunlar tesadufi ededlerin rand(0) ve tesadufi ededlerin qurasdirilmasi olan randomize( ) funksiyalaridir.rand (0) – in neticesi 0 ile 32767 diapazonunda ixtiyari tam tesadufi eded, randomize( ) –nin neticesi ise tekrarlanmani aradan qaldirmaqdir.

Digger iki element manipulyator ( bu haqqda dersliyin 3-cubolmesinde genis melumat verilib) adlanir ve cout obyektinin komeyi ile axinli xaricetmeni idare edir.bu manipulyatorlar ucun iomanipp.h élan olunmalidir.setw(6) manipulyatoru n –ci movqeden baslayaraq ekrana xaric olmani gosterir.endl – ise setrin sonunu ve kursoru yeni setrin baslangicina kecirilmesini temin edir (n idareedici simvolu kimi).

Massivler ve gostericiler

Bildiyimiz kimi massivin etyini massivin_adi [ indeks ]yazisi iki operanddan ibaretdir. Burada birinci , massivin_adi-sabit gosterici olmaqla , yaddasda massivin baslangic unvanin gosterir. Indeks – ise tam tipli ifade olmaqla , baslangisdan olan surusmeni teyin edir. Yeni massivin gostericis kimi asagidaki kimi tesvir olunur:

*( massivin_adi + indeks )

C/C++ dillerinde massivin indeksinin sifirdan baslanmasi qebul edilib. Yeni int z ( 3 ) massivi z ( 0 ), z ( 1 ), z ( 2 ) kimi uc indeksli elementden ibaretdir. Nezere alsaqki ,indeks elementin nomresini yox , massivin baslangicina nisbeten surusmeni teyin edir. Belelikle , burada *z – massivin birinc elementi z ( 0 )-a , *( z+1) – massivin ikinci elementi olan z( 1 ) – e ve *( z+2 ) –ise massivin ucuncu elementi olan z( 2 ) – e muracietdir.

#include

void main ( )

{

char x [ ]=˝DIXI˝;

int i = 0;

while ( * ( x+i ) ! = ΄΄ );

cout <<”n” << * ( x + i++ );

Bu proqramda massivin elementlerinin sayi gosterilmeyib ve mensubetme neticesinde massivin elementlerinin sayi teyin edilir , yeni burada massivin elementlerinin sayi bes olur. Sonuncu element setrini sonu ΄΄ simvoludur. While dovr operatorunun komeyile massivin elementleri ekrana xaric edilir.

Massivin ve gostericilerin asagidaki konstuksiyasina baxaq:

 
PcmasterTarix: Wednesday, 2010-08-11, 2:36 PM | Mesaj # 7
Lieutenant colonel
Qurup: Administrators
Mesaj: 147
Etibar: 0
Vəziyyət: Offline
Type*ad

Bu type * tipli muxtelif obyektleri teyin ve tesvir edir. Eger o istenilen funksiya xaricde yerleserse , onda obyekt susmaya gore sifir qiymetini alan xaric gostericidir.

Funksiya daxilinde bu qiymeti teyin olunmayan gostericidir. Her iki halda onu mueyyen tipde olan massivin elementleri ile bir nece usulla elaqelendirmek olar. Teyin etmede asagidaki imkanlar movcuddur:

Type*ad = artiq_type_teyin_olunmus_massivin_adi;

Type*adi = new type [ massivin_olcusu ];

Type*ad = ( type ) malloc ( olcu * sizeof ( type ));

Meselen:

Long arlong [ ] = { 10,20,3040 } ; //Massivin teyin olunub

Long *arlo = arlong ; // Gosterici teyin edilerek massivile

//elaqelendirilib

Int * arint = new int [ 4 ] ; //Gosterici teyin edilib ve

//Yaddas sahesi ayrilib

Float * arfloat = new float [ 4 ] ; //Gosterici teyin edilib ve

//Yaddas sahesi ayrilib

Double * ardouble = ( double * )malloc ( 4* sizeof( double ));

//Gosterici teyin edilib ve //Yaddas sahesi ayrilib

Massivin baslangic unvani massivin tesviri aninda kompilyator terefinden teyin olunur ve bu unvan hec vaxt yeniden teyin edile bilmez. Bele ki , asagidaki kimi tesvir duzgun deyil:

Float data [ 200 ];

Float * r = ( float *) malloc(sizeof(float));

*r = 1.412;

Data = r ; /sehv operator*/

C++ kompilyatoru data = r operatorunda sol qiymetin teleb olundugu melumatini verir. Bu onunla elaqedardir ki , data unvaninin qiymet r unvanin qiymetli ile evez bilmez.

Pascal dilinde oldugu kimi C++ -de bir massivin qiymetlerinin digger massive asagidaki sekilde mensub edilmesi sehvdir.

Int alfa [15] , betta [15];

Betta = alfa;

Burada betta massivinin gostericisi sabit oldugundan , bu sehvdir. Bu emeliyyat C++ - de murekkeb formada heyata kecirilir ve asagidaki kimidir.

Int * alfa = (int *)malloc(100*sizeof(int)),

*betta = (int*) malloc(100*sizeof(int)),

Betta = alfa;

Burada alafa – ni ozunde saxlayan unvan betta deyisenine mensub edilir.massivinlerden birindeki deyisiklik o biri massivde de bas verir.

Eger alfa massivinin qiymetlerini betta massivine gondermek teleb olunursa bu asagidaki sekilde heyata kecirilir:

Int;

Int * alfa= ( int * )malloc (100 * sizeof (int)),

*betta = ( int * )malloc (100 * sizeof (int)),

For (I = 0 $ I < 100 , i++)

Betta [ I ] = alfa [ I ];

Asagidaki kimi tesvir olunan alfa ve betta massivlerini muqayise edek.

 
PcmasterTarix: Wednesday, 2010-08-11, 2:37 PM | Mesaj # 8
Lieutenant colonel
Qurup: Administrators
Mesaj: 147
Etibar: 0
Vəziyyət: Offline
Int * alfa = (int * )malloc (200*sizeof(int));

Int betta [ 200 ];

Her iki massivin yaddasda 400 bayt yer tutur.Alfa massivin yaradilmasinda yaddasin dinamiki paylanma funksiyasi olan malloc-dan istifade olunur.burada massivler arasinda ondadirki, alfa – dan ferqli olaraq , betta sabit gostericidir. Burada , betta = alfa mensubedilmesi duz , alfa = betta mensubedilmesi ise sehvdir.Qeyd etmek lazimdir ki , deyisen gostericinin komeyi ile tesvir olunan massivlerde verilenlerin oxunub ve ya yazilmasi ucun muraciet usulu deyismir.Asagidaki proqrama baxaq:

/*Massivlerin adlari ve gostericileri arasindaki

elaqeni tesvir eden proqram*/

#include

void main ( )

{

float data [ 245 ];

printf( n data-nin unvani=%u , data );

printf( n data[ 0 ]- in unvani=%u ,& data [ 0 ] );

printf( n data[ 1 ]-in unvani=%un , data [ 1 ] );

}

Misal 5. Massivin butun elementlerine baxis ve onun qiymetlerini cap etmek ucun proqram

#include

#include

void main ( )

{

#define size 200

Float * data=(float*)

Malloc(size*sizeof(float));

Float*end_ptr=data+size-1;

Int i ;

For ( i=0; i
/*Massivin elementlerine muraciet ucun gostericiler

uzerinde hesabi emeliyyatdan istifade olunur*/

while ( data!=end_ptr ) printf ( %8.0,*data++ );

printf ( n );

}

Indi ise basqa misala baxaq.Burada ++*data ve *++data ifadeleriden istifade olunur. ++*data ifadesi *data – nin qiymetini, ondan istifade olunmazdan evvel bir vahid artirir.*++data ifadesinde evvel unvan bir vahid ve sonar bu unvanin qiymeti ( bu 10 – a beraberdir ) goturulur.

 
PcmasterTarix: Wednesday, 2010-08-11, 2:37 PM | Mesaj # 9
Lieutenant colonel
Qurup: Administrators
Mesaj: 147
Etibar: 0
Vəziyyət: Offline
Misal 6.

#include

#include

void main ( )

{

Int *data( int * )malloc( 20*sizeof( int ));

Int i;

For( i=0; i<20; i++ ) data [i]=10*I;

printf( n ++*datai=%d , ++*data );

printf( n ++*data=%dn , ++* data );

}

Birolculu massivlerde oldugu kimi coxolculu massivde de onun elementlerine muraciet hem indeks deyisenlerinin, hem de gostericilerin komeyi ile mumkundur.Her iki usulu bir ifadede birlesdirmek olar.Gostericilerin komeyi ile coxolculu massivin elementlerine muraciet nezere olmaq lazimdir ki , gostericiye tam kemiyyet elave etdikide onun daxili qiymeti elemente uygun tip ˝ uzunlugu ˝ qeder deyisir.Massivin adi hemise sabit – gostericidir.Meselen , type AR [ N ]

[ M ][ K ] kimi teyin edilen massivde AR gostericisine bir vahidin elave olunmasi unvanin qiymetini sizeof ( type ) * M * L kemiyyet deyisilmesine getirir. . .

Buna gore de * ( AR+1 )ifadesi AR [ l ]elementinin unvanidir.Umumi sekilde ucolculu AR [ i ][ j ] [ l ] massivin indeks elementleri * ( * ( * ( AR+i ) + j )+ l ) ifadesine uygundur.

Meselen , a [ 2 ] [ 3 ] ifadesi * ( * ( a+2 ) +3 ) gostericisi ile ekvivalentdir.

Coxolculu massivler yaddasda ele yerlesirki ,sonuncu indeks suretle deyissin. Int d [ 3 ] [ 4 ] kimi tesvir olunan ikiolculu massivin yaddasda asagidaki kimi yerlesir.

d [ 0 ] [ 0 ] , d [ 0 ] [ 1 ] , d [ 0 ] [ 2 ], d [ 0 ] [ 3 ],

d [ 1 ] [ 0 ] , d [ 1 ] [ 1 ] , d [ 1 ] [ 2 ], d [ 1 ] [ 3 ],

d [ 2 ] [ 0 ] , d [ 2 ] [ 1 ] , d [ 2 ] [ 2 ], d [ 2 ] [ 3 ],

Int d [ 2 ] [ 2 ] [ 2 ] kimi tesvir olunan ucolculu massivinverilenleri ise yaddasda asagidaki kimi yerlesir.

d [ 0 ][ 0 ][ 0 ],d [ 0 ] [ 0 ][ 1 ],

d [ 0 ][ 1 ][ 0 ],d [ 0 ] [ 1 ][ 1 ],

d [ 1 ][ 0 ][ 0 ],d [ 0 ] [ 0 ][ 1 ],

d [ 1 ][ 1 ][ 0 ],d [ 1 ] [ 1 ][ 1 ],

Bu deyilenleri asagidaki misalda gosterek.

Misal 7.Gostericinin komeyi ile massivin elementlerine muraciet proqrami …

#include

void main ( )

{ int ar [3][2][4] = { 0, 1, 2, 3, 10, 11, 12, 13,

100, 101, 102, 103,

110, 111, 112, 113,

200 ,201, 202, 203,

210, 211, 212 ,213,

}

Cout << “nar = " <<ar; // ar [ ][ ][ ] massivin unvani

Cout << “n*ar = " <<*ar; // ar [0][ ][ ] massivin unvani

Cout << “n**ar = " <<**ar; // ar [0][0][ ] massivin unvani

Cout << “n***ar = " <<***ar; // ar [0][0][0] elementi

Cout << “n*(ar+1) = " <<*(ar+1); // ar [1][ ][ ] massivin // unvani

Cout << “n*(ar+2) = " <<*(ar+2); // ar [2][ ][ ] massivin // unvani

// ar [0][1][ ] massivin // unvani

Cout << “n*(*ar+1) = " <<*(*ar+1);

Cout << “n*(*(*ar+1)+1)+1) = " <<*(*(*ar+1)+1)+1);

Cout << “n*(ar[1][1]+1) = " <<*(ar[1][1]+1);

Cout << “n*(ar[1]+1)[1] = " <<*(ar[1]+1)[1];

Proqramdaki asagidaki ifadeler ekvivalentdir:

*( * ( * ar + 1 ) + 1 ) + 1) = = ar [1] [1] [1] = = [1] [1]

Coxolculu massivin elementlerine muracietin iki formasinda bir ifadede istifade etmek olar , yeni :

*(ar [1] [1] + 1 ) = = 1 1 1

Dinimiki yaddasli massivler.

Massivleri yaddasda dinamiki yerledirmek ucun new emeliyyatindan istifade olunur ve formati asagidaki kimidir:

New massivin_tipi

Bu emeliyyat massivi inisiallasdirmaga imkan vermir. New emeliyyatinin yerine yetirilmesinin neticesi massivin birinci elementinin unvaninin qiymetinin gostericisidir.

Massivinler ucun dinamiki yaddasin ayrilmasinda onun olcusu tam teyin olunmalidir

Long (*lp)[2] [4]; //Gosterici teyin olunub

Ip = new long [3] [2] [4]; //Masivin ucun yaddas ayrilib

Bu misalda elementleri long tipinde olan ikiolculu massivde obyektin gostericisinden istifade olunub.Qeyd edek ki, gostericinin teyinind dairevi moterizelerden istifade olunub ki , bunsuz mumkin deyil. Bu operatorlarin yerine yetirilmesinden sonar lp gostericisi 3 * 2 * 4 *

Sizeof(long) bayt olculu dinamiki yaddas sahesine muraciet vasitesi olur.

Ayrilmis dinamiki yaddasdan istifade ucun bu yaddas sahesi bosalmalidir ki , bu delete emeliyyatinin komeyile yerine yetirilir.meselen , delete [ ] lp ; operatorunun icrasi neticesinde yuxaridaki ucolculu massiv ucun ayrilan dinamiki yaddas sahesi tamam bosalir.

Massivin teyininden ferqli olaraq , dinamiki massivin inisializasiyasi yerine yetirilmir.buna gorede dinamiki massivler massivler ucun yaddasin ayilmasinda onun olcusu tamaile teyin olunmalidir.

Meselen ,

New long [ ]; //Sehvdir, olcu melum deyil

New long [ ] [2 ] [4]; //Sehvdir,olcu melum deyil

 
Faydalı Məlumatlar bazası » C+ » С+ programlaşdırma haqqında dərslik » С+ programlaşdırma haqqında dərslik
  • Page 1 of 1
  • 1
Search:

Saturday, 2018-07-21, 4:25 PM
Welcome Guest
Axtarış
Sayt dostları
  • Create a free website