Kezdőoldal » Számítástechnika » Programozás » C++-ban hogyan kell érteni...

C++-ban hogyan kell érteni azt, hogy egy tömb elemszáma fordítási időben ismert kell, hogy legyen? Hiszen a felhasználótól is bekérhetjük a tömb méretét, és az csak futási időben lesz ismert.

Figyelt kérdés

2017. szept. 20. 16:19
1 2
 1/12 anonim ***** válasza:

Pontosan így.

A felhasználótól nem kérheted be futásidőben, mert fordításidőben kell ismertnek lennie.

2017. szept. 20. 16:24
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:
Na és ha van egy függvénye amiben egy input bekérés van x be majd ezután hozunk létre egy tömböt melynek mérete x lesz, akkor ennek a mérete csak futás időben fog kiderülni. Így a tömb elemszáma futási időben válik csak ismerté. Ezért sztem nem kell hogy ismert legyen futási időben.
2017. szept. 20. 18:43
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:

De kell, nem értem mit nem lehet ezen érteni meg jönni mindenféle ostoba példákkal.

Ezt mondja a C++ szabvány és pont.

Azt, hogy ennél sok fordító bóvebbet megenged az egyéni szociális probléma.

2017. szept. 20. 19:00
Hasznos számodra ez a válasz?
 4/12 anonim ***** válasza:

A szabvány szerinti C++-ban (legelső szabvány, Ansi C++) nem megengedett. A legtöbb fordítón azért mégis működik.

Ha futásidőben akarsz létrehozni tömböt, arra a new, vagy a c-ből maradt malloc való, azzal tudsz tetszőleges méretűt foglalni.

A működik, és a szabad között van különbség :)

2017. szept. 20. 19:31
Hasznos számodra ez a válasz?
 5/12 Hominida ***** válasza:
Ezért kell valami kulturált nyelvet használni, amelyik ismeri a REDIM utasítást. :-))
2017. szept. 20. 23:51
Hasznos számodra ez a válasz?
 6/12 endka ***** válasza:

Szerintem keveritek a szezont a fazonnal.

Egy analóg kérdés: Az autóm forgalmijából az derül ki hogy 2 személyes. Mi van ha már ketten utazunk és egy stoppost is fel akarunk venni?

Válasz:

Ne vegyél fel stoppost, VAGY ha számítani kell több utasra másik autóval kell INDULNI.

AZAZ ha az array mérete ismeretlen fordítási időben arra ott a dinamikus helyfoglalás.

Persze az is lehetséges hogy fordításkor csinálsz egy olyan nagy tömböt hogy az összes adat beleférjen.

2017. szept. 21. 07:14
Hasznos számodra ez a válasz?
 7/12 anonim ***** válasza:
Ha fordítási időben ismeretlen méretű tömböt akarsz, akkor válassz más adatszerkezetet, aminek mérete dinamikusan változtatható. De akkor be sem kell kérned a méretet, mert van adatszerkezet, amihez nem kell tudni külön méretet, mert tudja, hány elem van benne.
2017. szept. 21. 20:26
Hasznos számodra ez a válasz?
 8/12 A kérdező kommentje:

Tehát akkor ez nem szabványos:

int n;

cin >> n;

int tomb[n];

Egy régi C++ tanáromat is megkérdeztem, állítása szerint ez sem szabványos:

int n;

cin >> n;

int* tomb_2;

tomb_2 = new int[n];


Tehát akkor C++-ban nincs olyan egyszerű tömb, ami szabványos is, és nem baj, ha futási időben derül ki az elemszáma?


És miért van az, hogy pl. az eltén nem szabványos kód szerepel a tananyagban? (Lásd 11. oldalon itt:

[link] )

2017. szept. 22. 16:12
 9/12 anonim ***** válasza:

A második szabványos.

Attól, hogy nem szabványos még lehet használni.

2017. szept. 22. 18:03
Hasznos számodra ez a válasz?
 10/12 A kérdező kommentje:

A korábbi C++ szabvány szerint a tömbök a fordítás során jönnek létre, a méretet definiáló konstans kifejezések felhasználásával. A C++11 szabvány (Visual C++ 2012) a változó méretű tömbök (variable-length array) bevezetésével bővíti a tömbök használatának lehetőségeit. A futásidőben létrejövő változó hosszúságú tömb csak automatikus élettartamú, lokális változó lehet, és a definíciója nem tartalmazhat kezdőértéket. Mivel az ilyen tömbök csak függvényben használhatók, elképzelhető, hogy a tömbök mérete mind

[link] híváskor más és más - innen az elnevezés.

2017. szept. 25. 14:17
1 2

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!