6. laboratórium

A mutatók lehetővé teszik komplex adattípusok (struktúrák) ábrázolását, a függvény paramétereként elküldött értékek módosítását, a dinamikusan lefoglalt memóriaterületekkel való munkát vagy a táblákhoz való hatékonyabb hozzáférést. A mutató lehetőséget nyújt számunkra, hogy közvetve hozzáférjünk egy dátumtípus értékéhez.

laboratórium

A mutató valójában egy érték. Ez egy olyan memóriacím értéke, ahol az érdekel minket. A mutatók lehetnek közeli típusúak (csak eltolási értékkel rendelkeznek) vagy fényszóró típusúak (szegmensük és eltolásuk is van).

egész számot deklarál és amelynek értéke 10, és egy egész mutatót hívunk int_p. * megelőzi a mutatóváltozó meghatározását. A kapcsolat létrehozása és és int_p & előtagot használunk.

Ez hozzárendeli a változó címértékét (memória címét) és mutató. Mostantól int_p tartalmazza annak a memóriaterületnek a címét, ahová a 10-es értéket helyezik, a változó értékét és.

A PONTOK MEMÓRIA CÍMEKET tartalmaznak !

Értékére hivatkozni és használni fogjuk '*':

Ez a művelet hozzárendeli az értéket abból a memóriacímből, amelyre mutat int_p az x változó értéke.

Átadás egy függvény paramétereinek hivatkozásával

Számtani műveletek a mutatókon megengedett konstans összeadása/kivonása, két azonos típusú mutató növekménye/csökkentése és kivonása.

Az 1 hozzáadása azt eredményezi, hogy a mutató az azonos típusú következő objektumra mutat, a csökkentés pedig a memóriaterületben közvetlenül a megelőző objektumra mutat.

pi ++ - pi a következő egész számra mutat. Amit valójában kivonnak vagy hozzáadnak, az az méret (típus).

A mutatók jelentősége explicit típusú konverzióval megváltoztatható szemérmes.* ((Char *) pf) megadja a típusváltozó reprezentációjának első bájtját úszó.

A 0 mutató előre definiált NULLA és azt jelenti, hogy nem jelez semmit.

Mivel érvénytelen * meghatározatlan mutatót jelent, ezeken a mutatókon nem végezhetünk számtani műveleteket. Az érvénytelen mutatók lehetővé teszik számunkra, hogy a program általánosságát maximálisan tartsuk.

csökkent két mutató csak azonos típusú mutatók esetén megengedett. p-q a közötti objektumok számát jelenti o és q. Mutatók és festmények

* o a tömb első elemére mutat nak,-nek.

A karakterlánc hosszának kiszámításához kétféle mód van:

Megjegyzés Óvakodjon az inicializálástól, például:

Míg az első helyesen inicializálja a változót, és a szükséges helyet lefoglalja, a második utasítás memóriaterületet rendel az "abcd" karakterlánc konstanshoz, és a címet hozzárendeli a mutatóhoz. o. Dinamikus allokáció

DINAMIKUS MEMÓRIA Kiosztás (MALLOC, CALLOC, SIZEOF, INGYENES)
Dinamikus allokáció ajánlott a változók számára való helyfoglaláshoz. Nagyon nehéz előre tudni, hogy egy program mennyi adatot fog feldolgozni. A tömb statikus allokációja vagy a RAM memória elpazarolt helyéhez (meglehetősen drága helyhez) vezet, ha egy mennyiséget felosztunk az igények felett, vagy hibákat jelez, amikor a lefoglalt memória mennyisége jóval a szükségletek alatt van. A statikus allokáció a program adatterületén történik a program objektumképének előállítása során.

Sokkal jobb, ha szükség szerint kiosztja a helyet (ha lehetséges - a szükséges memória mennyisége nem lehet nagyobb, mint a rendelkezésre álló).

A C nyelv lehetővé teszi a programozók számára, hogy dinamikusan kiosztják és felszabadítsák a memóriaterületeket, amíg a program fut. A változó memóriáját lefoglaló függvény a calloc (). Használat is szükséges mérete () amely meghatározza a szükséges memóriát. Ingyenes () felszabadítja a lefoglalt memóriát. Mutatók a funkciókra

Kijelölhető, hogy egy mutató a-ra mutat funkció. Az ilyen mutató deklarálása a következőképpen történik:

A zárójel körül * func_p szükségesek, különben a fordító a deklarációt függvénydeklarációként fogja megérteni, amely egy mutatót ad vissza az egész számra. A cím hozzárendeléséhez egy mutató függvényhez az alábbiak szerint járunk el:

ahol herceg a függvény neve. A függvényhívás a következőképpen történik (ha nincsenek paramétereink):

Ha a függvény visszaadja az értéket, akkor: Parancssori érvek

Lehetséges argumentumokat küldeni egy programnak C-ben, amikor elindulnak. A fő funkciót követő zárójelek erre a célra szolgálnak. argc tartalmazza az ismét beérkezett argumentumok számát argv [] ez egy mutató tömb, amelyek mindegyike tartalmaz argumentumot.

Vegye figyelembe, hogy * Argv [0] tartalmazza a meghívott program nevét, és* Argv [1] mutató az első elfogadott érvre és * Argv [n] jelzi az utolsó érvet. Ha nincs érvünk, argc értéke 1 lesz, és n argumentumra argc egyenlő lesz n + 1-vel. Megoldott problémák
Javasolt kérdések