C++-ban mi a különbség int*t[20] és int (*t) [20] között?
int * t[20];
Olyan tömb deklarálása, amelyben 20 darab olyan mutatót tartalmaz, amelyek "int" típusú értékeket tartalmazó memóriákra mutatnak.
int (*t)[20];
Olyan mutató deklarálása, ami egy olyan tömbre mutat, amelyben 20 darab "int" típusú érték van.
Ez az amit sosem értettem. Állítólag egy tömb elemei a memóriában egymás mellett vannak.
Viszont ha egy int * t[20]; típusú tömb esetén azt mondom, hogy t[2] = new int[5]; akkor mi történik valójában a memóriában?
int * t[20];
t[2] = new int[5];
/* A "new int[5]" kifejezés lefoglal egy olyan memóriaterületet, amelyre ráfér 5 darab "int" típusú érték, és visszaadja ennek a memóriaterületnek a mutatóját. Ez a mutató lesz elmentve a "t" tömb harmadik elemébe. */
C++-ban a new operátort kell használni a dinamikus memóriafoglalásra.
Ha az adott feladathoz a dinamikusan lefoglalt memória a legideálisabb megoldás, akkor nyugodtan használj new operátort. Csak utánna ne felejtsd el felszabadítani azt a lefoglalt memóriát a delete vagy a delete[] operátorral.
Ha olyan egydimenziós vagy kétdimenziós tömböt akarsz használni amelynek mindegyik dimenziója konstans méretű, akkor ahoz felesleges a dinamikus memóriafoglalás.
By the way miért jó ilyet létrehozni? int(*t)[20]?
Akkor már miért nem lehet int t[20]?
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!