Sdílet prostřednictvím


Struktura prohlášení

"Konstrukce prohlášení" název typu a určuje posloupnost hodnot proměnných (nazývané "členové" nebo pole struktury,), které mohou mít různé typy.Nepovinný identifikátor nazývaný "značka", uvádí název typu Struktura a lze je použít v následné odkazy typu Struktura.Proměnné tohoto typu struktura obsahuje seřazených podle typu.Struktury v c jsou podobné typy známé jako "záznamy" v jiných jazycích.

Syntaxe

  • Struktura nebo unie specifikátor:
    identifikátor unie nebo struct opt**{** struct prohlášení seznam }

    identifikátor struct nebo unie

  • unie nebo struct:
    Struktura

    unie

  • Struktura prohlášení seznam:
    Struktura prohlášení

    Struktura prohlášení seznamu struct prohlášení

Struktura obsahu definováno jako

  • prohlášení struct:
    Struktura seznamu kvalifikátorů specifikátor declarator seznamu ;

  • Specifikátor kvalifikátor seznam:
    Specifikátor specifikátor typu kvalifikátor seznam opt

    specifikátor typu kvalifikátor kvalifikátor seznam opt

  • Struktura declarator seznamu:
    Struktura declarator

    Struktura declarator seznamu , declarator struktura

  • Struktura declarator:
    declarator

Deklarace typu struktura není vyhrazena místa pro strukturu.Je pouze šablona pro pozdější prohlášení strukturu proměnné.

Dříve definované a identifikátor (značka) lze odkazovat na typ struktury definované jinde.V tomto případě struct prohlášení seznam nelze opakovat tak dlouho, dokud je viditelná.Prohlášení ukazatele na struktury a funkce TypeDef pro typy struktury můžete použít tag struktury před je definován typ struktury.Definice struktury musí však byla zjištěna před aby jakékoli skutečné použití velikost polí.Toto je neúplné definice typu a typ tagu.Pro dokončení této definice definice typu musí být uvedeny později ve stejném oboru.

Struct prohlášení seznam Určuje typy a jména členů struktury.A struct prohlášení seznam argument obsahuje proměnnou nebo prohlášení bitové pole.

Každé proměnné deklarované v struct prohlášení seznam je definován jako typ struktury.Deklarace proměnných v rámci struct prohlášení seznam mají stejný formulář jako ostatní deklarace proměnných popsaných v této části, s výjimkou, že prohlášení nemůže obsahovat Specifikátory paměťových tříd ani inicializátory.Struktura členy mohou mít libovolné typy proměnných s výjimkou typu void, neúplné typ nebo typ funkce.

Člen nemůže být deklarována mít typ struktury, ve kterých se vyskytuje.Člen však lze deklarovat jako ukazatel na strukturu typu, ve kterém zobrazí dlouhý typ struktury má značku.Umožňuje vytvoření struktur propojených seznamů.

Struktury podle stejné obory jako jiné identifikátory.Struktura identifikátorů musí být odlišný od jiných struktury unie a výčet tagy s stejně viditelné.

Každý prohlášení struct v struct prohlášení seznam musí být jedinečné v rámci seznamu.Však identifikátor názvy v struct prohlášení seznam nemusí mít odlišné z běžné názvy proměnných nebo identifikátory v jiných seznamech, struktura prohlášení.

Vnořené struktury je také přístupný, jako kdyby byly deklarovány na úrovni souboru oboru.Například mít toto prohlášení:

struct a
{
    int x;
    struct b
    {
      int y;
    } var2;
} var1;

Tato prohlášení jsou obě právní:

struct a var3;
struct b var4;

Příklady

Tyto příklady ilustrují strukturu prohlášení:

struct employee   /* Defines a structure variable named temp */
{
    char name[20];
    int id;
    long class;
} temp;

The employee structure has three members: name, id, and class.name Člen je 20 prvku matice, a id a class jsou jednoduché členů s int a dlouhý zadejte resp..Identifikátor employee je identifikátor struktury.

struct employee student, faculty, staff;

Tento příklad definuje tři proměnné strukturu: student, faculty, a staff.Každá struktura má stejný seznam tří členů.Členové jsou deklarovány mít typ struktury employee, definované v předchozím příkladu.

struct           /* Defines an anonymous struct and a */
{                /* structure variable named complex  */
    float x, y;
} complex;

complex Struktura má dva členové s plovoucí typu, x a y.Typ struktury nemá žádná značka a proto je nepojmenovaný nebo anonymní.

struct sample   /* Defines a structure named x */
{
    char c;
    float *pf;
    struct sample *next;
} x;

První dva členy struktury jsou char proměnné a ukazatel na plovoucí hodnotu.Třetího člena next, je deklarován jako ukazatel na strukturu typu definovaného (sample).

Anonymní struktury může být užitečné, když značku s názvem není potřeba.To nastane když jedno prohlášení definuje všechny instance struktury.Příklad:

struct
{
    int x;
    int y;
} mystruct;

Vložené struktury jsou často anonymní.

struct somestruct
{
    struct    /* Anonymous structure */
    {
        int x, y;
    } point;
    int type;
} w;

Konkrétní společnosti Microsoft

Kompilátor umožňuje podle velikosti netříděno nebo nulovou matici jako poslední člen struktury.To může být užitečné, pokud velikost konstantní pole liší v různých situacích.Prohlášení tato struktura vypadá takto:

struct identifikátor**{**    Sada prohlášení o    Zadejte název pole**[];};**

Podle velikosti netříděno matice se může zobrazit pouze jako poslední člen struktury.Struktury obsahující prohlášení podle velikosti netříděno pole mohou být vnořené v rámci jiných struktur jako žádné další členy jsou deklarovány v jakékoli ohraničujícím struktur.Pole těchto struktur není povoleno.sizeof Operátor při použití proměnné tohoto typu nebo typu, předpokládá 0 pro velikost pole.

Struktura prohlášení lze také určit bez declarator jsou členy jiného struktury nebo unie.Názvy polí jsou povýšen do nadřazeného struktury.Nameless struktura například vypadá takto:

struct s
{
    float y;
    struct
    {
        int a, b, c;
    };
    char str[10];
} *p_s;
.
.
.
p_s->b = 100;  /* A reference to a field in the s structure */

Viz struktury a členy svazu informace o struktuře odkazy.

Konec konkrétní společnosti Microsoft

Viz také

Koncepty

Declarators a deklarace proměnných