C-ben tömb létrehozása változóval / konstanssal?
Figyelt kérdés
tömböt nem lehet létrehozni úgy, hogy a méretét egy változóval adjuk meg (vagyis általában nem lehet, valamelyik fordító engedi, de most nem erről van szó)
de ezek működő/elfogadott megoldások?
#define MERET 10
int tomb[MERET];
vagy
enum { MERET = 10 };
int tomb[MERET];
ha ezek működő megoldások, akkor az lenne a kérdésem, hogy mivel tudnak ezek többet, mint a változók? miért adhatják meg a tömb méretét, miközben a változó nem?
2020. aug. 22. 12:53
1/8 anonim válasza:
Nem "tudnak" többet, viszont ezek értéke már fordítási időben ismert, így használhatók a tömb méretének megadására, míg egy változó értéke csak futási időben ismert, így a C fordító nem tudhatja, hogy mennyi helyet foglajon le a tömbnek.
2/8 A kérdező kommentje:
értem, köszi
2020. aug. 22. 13:04
3/8 anonim válasza:
Mire gondolsz pontosan?
int n = 10;
int arr[n];
Ezzel semmi gond nincs pl., minden standardnek megfelelő fordítóval működik.
4/8 anonim válasza:
Talán működik az újabb fordítókkal (C11 például), de a sztandard ANSI C-ben ez nem működne, mert futásidőben csak dinamikus memóriát tud foglalni.
5/8 anonim válasza:
Ja bocs, valamiért azt hittem C++-ról van szó.
Akkor nem szóltam.
6/8 anonim válasza:
5: Akkor Te ezek szerint úgy válaszolsz a kérdésekre, hogy nem is olvasod azt.
7/8 anonim válasza:
C++ban sem minden esetben működik ez amúgy, főleg ha függvénynek adod át némely esetben. ;)
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!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!