Kezdőoldal » Számítástechnika » Programozás » Programnyelv a C++ : lentebb...

Programnyelv a C++ : lentebb írom a programrészletet, és a kérdés, mitől egyenlő az "adott" 2 érték? (tehát lent látható igazából a kérdésem)

Figyelt kérdés

int tmb[] = { 1, 2, 3, 4, 5};

int i = 3;

i[tmb] = 25;


Na és itt ilyenkor tudjuk, hogy:


i[tmb] == tmb[i] == 25 teljesül ---> a kérdésem, hogy ez a 2 érték ( i[tmb] és tmb[i] ) miért egyenlő? Ilyenkor pl. az i[tmb] -nél az 'i' egy tömb?

És tényleg mi az oka ennek a fenti "egyenlőségnek"?


Előre is nagyon szépen köszönöm a segítséget!



2020. ápr. 2. 22:40
 1/3 anonim ***** válasza:
100%
az i[tmb] alapban 4 et adna vissza, mivel a 3. elem az a 4. (ugye 0,1,2,3). Az i[tmb]=25 el értéket adsz a 3. elemnek, 25 öt.Így ha utána lekérdezed a 3. elemet nyilván annak az új értéke 25 lesz.
2020. ápr. 2. 23:04
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:
100%

A fenti egyenlőség oka, hogy i[tmb] pontosan ugyanazt jelenti, mint a tmb[i]. Hogy miért, az egy érdekes téma.


Először is: a tömb típusú változók effektíve pointerek a tömb első elemére. Egy tömb indexelése (tmb[i]) azt jelenti, hogy fogja a tmb által mutatott memóriacímet (a tömb első eleme), és eltolja i-vel, így kapod meg a tömb i. elemét. Más szóval a következő alak:

tmb[i]

Lényegében ezt jelenti:

(*(tmb+i)), tehát fogjuk a tmb pointert és eltoljuk i-vel. Viszont a kommutativitás miatt ez ekvivalens lesz a következővel:

(*(i+tmb))


Ami pedig az i[tmb] szintakxisnak felel meg. Röviden, tömören: Az i[tmb] és a tmb[i] pontosan ugyanazt jelenti.

2020. ápr. 3. 01:21
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:
Köszönöm Neked #2 -es, így sikerült megérteni. Fogalmam sem volt, hogy tmb[i] az (*(tmb+i)) -vel egyenlő, illetve a többiről, de így világos most már. Hálás köszönetem.
2020. ápr. 3. 10:24

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!