Diskuze: C - Rozdíl mezi strukturou a vlastním datovým typem
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Práce se strukturou:
struct cislo {
int i;
};
void main()
{
struct cislo x;
x.i = 0;
}
Práce s definovaným typem:
typedef struct {
int i;
} cislo;
void main()
{
cislo x;
x.i = 0;
}
Takže nemusíš psát všude 'struct'.
Druhá otázka: struktura je datový typ, můžeš si ale zadefinovat vlastní datový typ, který zjednoduší zápis.
Právě že ani u struktury nemusíš psát struct
struct cislo {
int i;
}x;
void main()
{
x.i = 0;
}
Ve skutečnost jsi struct napsal jenom jsi to přehlédl.
Zadefinoval jsi totiž strukturu cislo a proměnnou toho typu.
Podívej se, jak funguje tenhle kód.
struct {
int i;
} x;
struct cislo {
int i;
} y;
int get_cislo(struct cislo x)
{
return x.i;
}
void main()
{
struct cislo z;
z = y; // ok
x = y; // chyba, rozdílné datové typy
get_cislo(z);
}
A pokud bys chtěl funkci, který by tuhle strukturu přijímala jako parametr, budeš muset vždy psát struct cislo.
Aha, chápu.
A zkrácení zápisu je všechno, co vlastní datový typ nabízí, nebo má
více jiných výhod oproti struktuře?
Definice vlastního datového typu nabízí vyšší úroveň abstrakce.
Pokud je datový typ tzv opaque (nevidíš do jeho definice), pak se může do budoucna libovolně měnit a celý kód bude stále fungovat. Například pracuješ s typem X a netušíš, jestli je to int nebo struktura (občas to bývá obojí naráz) - a díky abstrakci datového typu to ani nepotřebuješ vědět.
Zobrazeno 7 zpráv z 7.