Tárgyakat helyezünk RAM

Pointer aritmetikai, tömbök.

Tömbök, indexelés szereplő, az alapműveleteket pointerek
Gyakorlati példák - funkciók strcpy és strlen
ahelyett, hogy a következtetés
hasznos gyakorlatok
Irodalom

Tárgyakat helyezünk RAM

Kivéve a fenti, a többi mutató aritmetika nem definiált - használatuk vezet fordítási hibák programot. Például egy fordítóprogram hibát fog okozni egy kísérlet, hogy két mutató, illetve összehasonlítása mutatókat különböző típusú objektumok, kísérlet kivonva száma mutató lebegőpontos és így tovább. Ugyanez az aritmetikai műveletek, amelyek alkalmazhatók az irányokat, a legtöbb esetben azt jelenti, csak a keretében a tömbök (Emiatt pointer aritmetikai és tömbök általában kezelik ugyanabban az időben).

Tömbök, indexelés szereplő, az alapműveleteket pointerek

Array - rendezett halmaza (gyűjtemény) hasonló elhelyezett tárgyak egyetlen memóriaegység egymás után. Többszörösei tárgyak teszik ki a tömböt nevezzük tömb elemeit. Minden elem a tömb megfelel a sorozatszáma - az index. Indexelemeket nullával kezdődik. kezdeti (első) eleme a tömb indexe 0, azt követő (második) - az index 1 a második (harmadik) - .. 2 index stb Az utolsó eleme a tömb a K elemek egy indexe k - 1.

Tárgyakat helyezünk RAM

Ábra. 1. Egy sor k elemet

Pontosabban, az alapelvek a tömbök és a mutatók az alapműveleteket, tekintsük az alábbi egyszerű példát.

Tömbök, valamint minden egyéb tárgyakat lehet elhelyezni a verem, és a kupac. Először is, úgy a végeredmény tömbök a veremben. Az első sorban a kód végzi a fő funkciója van a helye:

Összhangban a szemantikai indexelési üzemeltető, vándorol, a tömb VEC objektumot index 2, és a kapott objektumot van rendelve egy új érték - számos 103 (6. ábra) megengedett erre tárgymemória cellában van írva.


Ábra. 7. A mutatót a tömb elem a k tárgyak

Ha p pontot, hogy egy tárgy, nem eleme a tömb, az eredmény a felül p egész szám nincs meghatározva (és fordító hiba ilyen kiegészítés nem eredményez - egy hiba lép fel a program végrehajtása során).

A mi esetünkben, VEC - a mutató az eredeti elem a tömb, éppen ezért, ha egy kifejezés kiértékeléséből VEC + 2, mi kell, hogy egy mutató a második után a kezdeti, vagyis a harmadik elem a tömb ... Ami a feltételezéseink a helyét a memóriában lévő objektumok, van:

VEC + 2 = vec + 2 * sizeof (rövid) = 0xF838 + 2 * 2 = 0xF838 + 4 = 0xF83C.

Ha a nyomtatási elem tömb index értéke 2 és a tárgy által mutatott VEC + 2:

A fenti kód töredékek is az esetekre, amikor nem számít, hogy milyen növelő operátor - előtagot vagy postfix - növelésére használt változó értékét. Ezek darabjai a növelő operátor csak meg kell növelni az értékét az i index. közvetlenül visszatérési értéke nem használják.

Talán a while kifejezés (* p ++ = * s ++) az első pillantásra úgy tűnik, érthetetlen, de ez a poszt hasznos, a gyakorlatban egy ilyen kód található. Annak fontosságát, hogy a megértés, az a tény, hogy az általunk vizsgált példában a könyvben tárgyalt Bjarne Stroustrup «C ++ programozási nyelv” [1] és Brian Kernighan és Dennis Ritchie «C programozási nyelv” [2]. Ezen kívül fontos a tudás szempontok végrehajtásának strcpy funkció megtalálható a könyvek Joel Spolsky a „Joel programozás” [6] és a „Joel: és megint programozás” [10].

A rész lezárásához figyelembe vesszük a kivonás egyik mutató a másiktól. Az ezzel a művelet megvalósul, különösen, kiszámításának a funkciójára a vonal hossza strlen szabványos C / C ++ library.

ahelyett, hogy a következtetés

Jelentős része a hiba kezelése során memóriavesztés társítva, azaz. E. Ha nincs, vagy nem megfelelő kibocsátás kibocsátás korábban elkülönített kupac. Különösen a leggyakoribb hiba az, hogy távolítsa szilárd tárgyak helyett a delete operátor operátor törli []. Az ilyen helyettesítés piaci szereplők nem fordulhat elő, ha töröl egy sor beépített objektum típusok, de a pusztítás egy sor összetett objektumok, például egy tömböt (típusú objektumok std :: string), a delete operátor vezet, amit a törlést csak az első sorban, és a többi marad memóriát. Észlelni az ilyen hibák létre speciális eszközök, amelyek közül az egyik tárgyalt első része a cikket.

Így a memória működését különleges figyelmet és gondoskodást, a rossz bánásmód az ő eredményük elég nehéz felismerni a hibákat, és jelentős időveszteség a szoftverfejlesztés.

hasznos gyakorlatok

  1. Végre billentyűzet két egész tömböt, hogy hozzon létre, és megjeleníti a harmadik tömb inszertálásával kapott valamennyi elemét a második tömb miután egy előre meghatározott első elemet.
  2. Végezze billentyűzet két sort, hogy hozzon létre és megjeleníti a harmadik húr, hogy az összefűzés a bevitt.

Irodalom

Kapcsolódó cikkek