Módszerek hozzáférés elemei tömbök

Mivel a neve a tömb egy mutató megengedett, például egy ilyen hozzárendelés:

Két különböző módon lehet elérni a tömb elemeit. Az első módszer magában foglalja a használata hagyományos index kifejezések zárójelben, például array [16] = 3 vagy array [i + 2] = 7. Ezzel a módszerrel elérhető, rögzített két kifejezést, a második kifejezést szögletes zárójelek közé. Az egyik ilyen kifejezések kell lennie egy mutatót, és a második - egy kifejezés az egész típusú. Rögzítése szekvenciája ezek a kifejezések lehet bármilyen, de a zárójeles kifejezésben feljegyezzük követi a második. Ezért a felvételi tömb [16] és 16 [array] egyenértékűek, és képviseli a tömbelem száma tizenhat. A kurzor nem a használt, hogy egy konstans, jelezve egy szilárd, ez lehet egy változó az index kifejezést. Különösen, miután a hozzárendelés ptr = array hozzáférést a tizenhatodik eleme a tömb lehet hozzáférni a mutatót ptr alakos ptr [16] vagy 16 [ptr].

Ahhoz, hogy a kezdeti tömb elem (azaz, indexű elem nulla) érték használható egyszerűen vagy ptr mutató tömb. Bármilyen a hozzárendelések

hozzárendel egy kezdeti érték a tömb elem 2, de a legtöbb gyorsan végrehajtott hozzárendelés * tömb = 2 és * ptr = 2, mivel nem szükséges végrehajtani egy összeadási művelet.

3. ábra. memóriafoglalási kétdimenziós tömbben.

Például, hivatkozással arr2 tételek [1] [2] végezhetjük keresztül ptr2 pointer bejelentett formájában int * ptr2 = arr2 [0], mint egy ptr2 kezelésére [1 * 4 + 2] (itt az 1. és 2., a alkalmazott indexek elemet, 4. és az elemek száma egy sorban) vagy ptr2 [6]. Vegye figyelembe, hogy a vizuálisan hasonló kezelés arr2 [6] nem lehetséges, mert az index az index 6 nem létezik.

Ahhoz, hogy a tételt arr3 [2] [3] [4] A háromdimenziós tömböt is mozhno használja a mutatót, le, mint float * ptr3 = arr3 [0] [0] egy indexelési expressziós formájában ptr3 [3 * 2 + 4 * 3 4] vagy ptr3 [22].

A mutatók végezhet egyváltozós: növelő és csökkentő. Amikor műveletek végrehajtása ++ és - egy mutató értékét növeljük vagy csökkentjük a hossza az említett típusú mutató által használt.

A bináris műveletek az összeadás és kivonás részt mutatót, és az értéke az int típusú. Ha a művelet következtében lesz egy mutatót a forrás típusa és értéke egy adott számú elem nagyobb vagy kisebb, mint az eredeti.

Az értékek két mutató azonos típusú lehet, mint a művelet ==. =.> = Az értékek mutatókat tekintjük csupán egészek, és összehasonlítás eredménye 0 (hamis) vagy 1 (igaz).

Ebben a példában az érték kisebb, mint az az érték ptr1 ptr2 operátor, és ezért egy [3] = 4 nem kerül végrehajtásra.

C nyelven tömb elemeit lehet bármilyen típusú, és különösen, lehet bármilyen típusú mutatók. Vegyünk egy pár példát a mutatók.

generál programobjektumokat képviselteti magát a 4. ábra görbéjén.

5. ábra. Layout változók a műtét után pp + = 2.

generál programobjektumokat képviselt az ábrán a 6. ábrán.


6. ábra. Az elrendezés a kétdimenziós tömb mutató.

E rendszer szerint, a hozzáférés elem a [0] [0], hogy a jelek egy, p, pa a következő referenciák: a [0] [0], * a ** a [0], * p ** pa , * p [0].

Ez képviseli a rendszer a 7. ábrán látható.


7. ábra. Elrendezése mutatókat szálakat.

A memória dinamikus tömbök le kell írni a megfelelő mutatót, és rendeljen hozzá egy értéket a calloc funkciót. Dimenziós tömb egy [10] az úszó típusú elemek hozhatók létre a következők szerint:

Ahhoz, hogy hozzon létre egy kétdimenziós tömböt először meg kell kiosztani memória tömb mutatókat az egydimenziós tömb, majd memóriát kiosztani egydimenziós tömböket. Tegyük fel például, szükséges, hogy hozzon létre egy tömböt a [n] [m], ez lehet a következő programot fragmens: