Tartalmazhat-e egy struktúra önmagára mutató mutatót?

Pontszám: 4,1/5 ( 61 szavazat )

Nem deklarálhat olyan szerkezettípust , amely önmagát tagként tartalmazza, de olyan struktúratípust deklarálhat, amely önmagára mutató mutatót tartalmaz tagként. A szerkezeti címke a struktúraváltozó adattípusát jelzi. A struct kulcsszó nem kötelező a C++ nyelven.

A struktúráknak lehetnek mutatói?

A struktúramutató egy memóriablokk címére mutat, ahol a struktúra tárolva van . Mint egy mutató, amely megmondja egy másik, bármilyen adattípusú (int, char, float) változó címét a memóriában.

Tartalmazhat-e egy struktúra olyan tagot, amelynek típusa megegyezik önmagával?

A könyv azt mondja: " Egy struktúra nem tartalmazhatja önmagának példányát . Például egy struct munkavállaló típusú változó nem deklarálható a struct munkavállaló definíciójában. A struct munkavállalóra mutató mutató azonban szerepelhet."

Mi az a strukturált változó?

strukturált változó Egy olyan változó a programozási nyelvben, amely egy összetett objektum , amely vagy egyszerű adatelemek, vagy maguk is strukturált objektumok összetevőiből áll; ezeket az összetevőket nevek azonosítják.

Egy struktúra belefoglalhatja magát a definíciójába?

struct rec { int i; struct rec r; } Egy szerkezet nem hivatkozhat közvetlenül önmagára .

Mutató a szerkezeti változóra

32 kapcsolódó kérdés található

Mi az üres mutató?

Az üres mutató olyan mutató, amelyhez nincs társított adattípus . Az üres mutató bármilyen típusú címet tartalmazhat, és bármilyen típusúra beírható.

Mi történik, ha egy szerkezetre mutató mutatót növeljük?

Ha egy mutatót növelünk, akkor valójában annyival növekszik, amennyivel megegyezik annak az adattípusnak a méretével, amelyre mutatóként szolgál . Például: Ha az 1000-es címet tároló egész mutatót növeljük, akkor 2-vel (egy int mérete) nő, és az új cím 1002-re mutat.

Mire jó a mutató a szerkezetre?

A szerkezetre mutató mutató a teljes szerkezet hozzáadását tartalmazza. Összetett adatstruktúrák, például linkelt listák, fák, grafikonok és így tovább létrehozására szolgál . A struktúra tagjait egy speciális, nyíl operátornak nevezett operátor segítségével érhetjük el ( -> ).

Mit csinál a mutató?

A mutató egy változó, amely egy memóriacímet tárol . A mutatók más változók vagy memóriaelemek címeinek tárolására szolgálnak. A mutatók nagyon hasznosak egy másik típusú paraméterátadáshoz, amelyet általában Cím szerinti átadásnak neveznek.

Hogyan deklarálható egy függvénymutató?

A függvényre mutató mutató a függvény végrehajtható kódjának címére mutat. Mutatók segítségével függvényeket hívhat meg, és függvényeket argumentumként adhat át más függvényeknek. ... Egy függvényre mutató mutató deklarációjában vagy definíciójában használhat záró visszatérési típust.

Mi az általános mutató?

Ha egy változót a void típus mutatójaként deklarálunk, általános mutatónak nevezzük. Mivel nem rendelkezhet void típusú változóval, a mutató nem mutat semmilyen adatra, ezért nem lehet rá hivatkozni. Ez azonban továbbra is egy mutató, használatához először csak egy másik típusú mutatóra kell leadnia.

Növelhető a mutató?

A mutató értékkel vagy címmel növelhető a mutató adattípusa alapján . Például egy egész szám mutató 4-gyel növelheti a memóriacímet, mivel az egész szám 4 bájtot foglal el.

Kivonható egy mutató egy másik mutatóból?

Két mutató is kivonható egymástól, ha a következő feltételek teljesülnek: Mindkét mutató ugyanazon tömb elemeire fog mutatni; vagy ugyanazon tömb utolsó eleme után eggyel. A kivonás eredményének reprezentálhatónak kell lennie a ptrdiff_t adattípusban, amely az stddef-ben van definiálva.

Mi a mutató a példával?

A mutató egy olyan változó, amely egy másik változó címét tárolja . ... Például egy egész változó egy egész szám értéket tartalmaz (vagy mondjuk eltárol), azonban egy egész szám mutató egy egész változó címét tartalmazza.

Mi az a null és érvénytelen mutató?

A nullmutató alapvetően egy null érték, amely bármilyen adattípus mutatójához van hozzárendelve, míg az üres mutató olyan adattípus, amely mindaddig érvénytelen marad, amíg nincs hozzárendelve egy adattípus címe. ... A nulla mutató nem tartalmaz hivatkozást semmilyen változóra/értékre.

Mit nem tudsz megtenni üres mutatón?

Mivel az üres mutatót csak a változók öntésére használják, ezért a mutató aritmetikáját nem lehet üres mutatóban elvégezni.

Hol használják a void pointert?

üres mutatókat kell használni , amikor egy adatblokk tartalma nem fontos . Például adatok másolásakor a memóriaterület tartalma másolódik, de az adatok formátuma nem fontos.

Mi történik, ha kivonunk két mutatót?

Ha két mutatót kivonunk, mindkettőnek ugyanannak a tömbobjektumnak az elemeire kell mutatnia, vagy az egyiknek a tömbobjektum utolsó eleme után kell mutatnia; az eredmény a két tömbelem alsó indexének különbsége . Vegye figyelembe, hogy ha engedélyezve van, az eredmény az alsó indexek különbsége.

Összehasonlítható-e két mutató?

Ha két mutatót összehasonlítunk, az eredmény a mutatott objektumok címterében elfoglalt relatív elhelyezkedésétől függ. Ha két objektumtípusra mutató mutató ugyanarra az objektumra mutat, vagy mindkettő ugyanazon tömbobjektum utolsó eleme után mutat, akkor összehasonlítják az egyenlőt .

MI A NULL mutató C-ben?

A nullmutató olyan mutató, amely semmire sem mutat . A nullmutató néhány felhasználási módja: a) Egy mutatóváltozó inicializálása, amikor a mutatóváltozóhoz még nincs hozzárendelve érvényes memóriacím. b) Null mutató átadása egy függvényargumentumnak, ha nem akarunk érvényes memóriacímet átadni.

Mit csinál a * p ++ C-ben?

A C programozási nyelvben a *p a mutatóban tárolt értéket jelöli . A ++ az elő- és utótag kifejezésekben használt növekményes operátor. * a hivatkozási operátor. A ++ és * előtag elsőbbsége megegyezik, és mindkettő jobbról balra asszociatív.

Miért nem növelhetünk egy tömböt, mint egy mutatót?

Ez azért van így, mert a tömb konstans mutatóként kezeli a deklarált függvényben . Megvan rá az oka. A tömbváltozónak a tömb első elemére kell mutatnia, vagy azon szomszédos memóriahelyek blokkjának első memóriapéldányára, amelyekben tárolva van.

Mi történik, ha hozzáad egyet a mutatóhoz?

A mutató hozzáadása azt jelenti, hogy át kell lépni valamelyik következő hegyes elemre. A cím tehát a hegyes elem méretével növekszik . A mutató címe a sizeof(T) értékkel növekszik, ahol T a mutatott típus. Tehát egy int esetén a mutató a sizeof(int) értékkel növekszik.

Eltávolítható az általános mutató?

void pointer a C / C++ nyelven C++ nyelven a malloc visszatérési értékét explicit módon (int *) kell megadnunk. 2) A C-ben lévő void mutatók általános függvények C-ben való megvalósítására szolgálnak. Például a qsort()-ban használt függvény összehasonlítása. ... 1) az üres mutatók nem hivatkozhatók le .

Mekkora az üres mutató mérete?

Az üres mutató mérete rendszerenként változik. Ha a rendszer 16 bites, az üres mutató mérete 2 bájt . Ha a rendszer 32 bites, az üres mutató mérete 4 bájt. Ha a rendszer 64 bites, az üres mutató mérete 8 bájt.