Kezdőoldal » Számítástechnika » Programozás » Typedef struct valami{}valami;?

Typedef struct valami{}valami;?

Figyelt kérdés

ez különbözik valamiben ettől?

typedef struct{}valami;


2016. dec. 27. 13:26
 1/5 A kérdező kommentje:
c nyelv
2016. dec. 27. 13:26
 2/5 anonim ***** válasza:
69%
Ha jól emlékszem, nem különbözik, nyugodtan használható.
2016. dec. 27. 13:44
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:
100%

De, különbözik.


Második esetben pl. nem működik ez:

struct valami x;

2016. dec. 27. 14:05
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:
100%

Na, akkor tisztázzuk, hogy mi is ez az egész. Ne felejtsük el, ANSI C-ben vagyunk és GCC-vel fordítunk.


Struct-ot akkor szoktunk csinálni, ha egy új, összetett típust akarunk létrehozni. Ez alapesetben így néz ki:

struct azonosító {

típus azonosító;

típus azonosító;

...

}


Az azonosító egy egyszerű, szabályos nevet jelent, semmi mágikusat. A típus pedig bármilyen korábban deklarált típus lehet.


Innentől kezdve, hogy ezt te leírtad, ez a struct megjelenik, mint típus. Tehát csinálhatsz struct xy típusú változókat:

struct xy valami;


Csak ugye ezt így hosszú kiírni. Ekkor jön a typedef, amelynek az a lényege, hogy egy már meglévő típushoz egy másik azonosítót rendel:

typedef régi_típus_azonosítója új_azonosító;


Szóval:

typedef struct azonosító {

...

} új_azonosító;


Ez annyiban egyszerűsíti a dolgokat, hogy:

új_azonosító valami;


Jogos a kérdés, hogyha így typedef-fel akarok "létrehozni" egy struct-ot, minek írjam le kétszer a nevét? Így megteheted azt, hogy a struct-nak nem adsz nevet:

typedef struct {


} azonosító;


Ezzel egészen addig nincs is gond

typedef struct {

itt nem akarsz ugyanerre a típusra hivatkozni.

} azonosító;

Mert ugyebár ekkor a typedef nem adott neki új azonosítót, másik azonosítója pedig nincs, szóval you're screwed. Kénytelen vagy visszatérni a korábbi alakra:

typedef struct azonosító {

struct azonosító név;

...

} új_azonosító;

2016. dec. 27. 19:16
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:

Picit másként:

A typedef formája:

typedef típusleírás új_típus_név


A típusleírásba tehetsz mondjuk struct deklarációt:

struct {...}

struct név {...}


Ahogy fentebb is írták, az egyik esetben nem nevezed meg, mert máshol úgysem hivatkozol már rá, a másik esetben pedig nevesíted (szimbólumot rendelsz hozzá), így máshol is használhatod, mint típus azonosítót.

2016. dec. 28. 22:32
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!