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)
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!
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!