Udostępnij za pośrednictwem


Deklaracje struktury

"Deklaracja struktury" nazwy typu i określa kolejność wartości zmiennych (o nazwie "Członkowie" lub "pola" struktury), które mogą mieć różne typy.Opcjonalnym identyfikatorem o nazwie "tag", podaje nazwę typu Struktura i mogą być używane w kolejnych odwołań do typu Struktura.Zmienna typu Struktura przechowuje całą sekwencję zdefiniowane przez tego typu.Struktury c są podobne do typów, znane jako "rekordy" w innych językach.

Składnia

  • Specyfikator struct lub Unii:
    Identyfikator struct lub Unii opt**{** deklaracjach struct }

    Identyfikator struct lub Unii

  • struct lub Unii:
    struct

    Unia

  • struct deklaracjach:
    Deklaracja struct

    Deklaracja struct struct deklaracji listy

Zawartość struktury jest zdefiniowany jako

  • Deklaracja struct:
    listy qualifier specyfikatora w struct listy; niewłaściwy deklarator ;

  • listy qualifier specyfikatora:
    Specyfikator typu w specyfikatora listy kwalifikator opt

    Typ kwalifikatora w specyfikatora listy kwalifikator opt

  • struct; niewłaściwy deklarator listy:
    niewłaściwy struct deklarator

    struct; niewłaściwy deklarator listy , ; niewłaściwy struct deklarator

  • niewłaściwy struct deklarator:
    declarator

Deklaracja typu Struktura nie odłogowanych miejsca dla struktury.Jest tylko szablon na później deklaracje zmiennych struktury.

Uprzednio zdefiniowane a identyfikatora (znacznik) może służyć do odwoływania się do typu Struktura, zdefiniowany w innym miejscu.W tym przypadku deklaracjach struct nie może się powtarzać, tak długo, jak długo definicji jest widoczny.Deklaracje wskaźniki do struktur i definicje TypeDef dla typów struktury można zastosować tag struktury, zanim typu Struktura jest zdefiniowana.Jednakże definicja struktury musi napotkał przed do rzeczywistego wykorzystania w rozmiaru pola.To jest niekompletne definicji, typ i tag typu.Definicja ta wypełnia definicji typu musi wyświetlane później w tym samym zasięgu.

Deklaracjach struct Określa typy i nazwy elementów konstrukcji.A deklaracjach struct argument zawiera zmienną lub deklaracje pole bitowe.

Każda Zmienna zadeklarowana w deklaracjach struct jest zdefiniowany jako członka typu Struktura.Deklaracje zmiennych w ramach deklaracjach struct mieć tego samego formularza, jak inne deklaracje zmiennych, które zostały omówione w tej sekcji, z wyjątkiem, że deklaracje nie może zawierać klasy magazynowej Specyfikatory lub inicjatorów.Członkowie struktury mogą mieć żadnych typów zmiennych, z wyjątkiem typu void, niekompletnemu typowi lub typ funkcji.

Nie można zadeklarować członek ma typ struktury, w której pojawia się.Jednakże członek mogą być deklarowane jako wskaźnik do typu Struktura, w których występuje tak długo, jak typ struktury ma tag.Pozwala to na tworzenie list połączonych struktur.

Struktury postępuj zgodnie z tym samym zakresów jako identyfikatory innych.Struktura identyfikatorów muszą być niezależne od innych struktury, Unia i Wyliczanie znaczników za pomocą tej samej widoczności.

Każdy deklarację struct w deklaracjach struct musi być unikatowa w obrębie listy.Jednakże nazwy identyfikatora w deklaracjach struct nie trzeba się różni od zwykłej nazwy zmiennej identyfikatory innych listach deklaracji struktury.

Struktury zagnieżdżone są dostępne także tak, jakby były one zadeklarowane na poziomie zakresu pliku.Na przykład biorąc pod uwagę tę deklarację:

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

Deklaracje te są zarówno prawne:

struct a var3;
struct b var4;

Przykłady

Te przykłady ilustrują struktury deklaracji:

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 Członkowskich jest tablicą typu 20 element i id i class są proste członków z int i long wpisz odpowiednio.Identyfikator employee jest identyfikatorem struktury.

struct employee student, faculty, staff;

W tym przykładzie definiuje trzy zmienne struktury: student, faculty, i staff.Każda struktura ma tej samej listy z trzech członków.Członkowie są uznane za typ struktury employee, określonych w poprzednim przykładzie.

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

complex Struktury ma dwa elementy z pływaka typu, x i y.Typu Struktura ma tagu i dlatego nienazwane lub anonimowe.

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

Są dwa pierwsze elementy struktury char zmienna i wskaźnik do pływaka wartości.Trzeciego członka, next, jest zadeklarowana jako wskaźnik do zdefiniowanych struktury (sample).

Anonimowe struktur może być przydatne w tagu o nazwie nie jest potrzebna.Ma miejsce w przypadku jednej deklaracji definiuje wszystkie wystąpienia struktury.Na przykład:

struct
{
    int x;
    int y;
} mystruct;

Osadzone struktury często są anonimowe.

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

Programu Microsoft

Kompilator umożliwia tablicy niesortowana według wielkości lub o rozmiarze zero jako ostatni element struktury.Może to być przydatne, jeśli rozmiar tablicy stałych różni się w różnych sytuacjach.Deklaracja taka struktura wygląda następująco:

struct Identyfikator**{**    zestaw deklaracji    Wpisz nazwę tablicy**[];};**

Tablice niekalibrowane można pojawiają się tylko jako ostatni element struktury.Struktury zawierające deklaracje niesortowana według wielkości tablicy można zagnieżdżać wewnątrz innych struktur tak długo, jak długo nie dalszych członków są zadeklarowane w żadnych struktur okalającego.Tablice takie struktury nie są dozwolone.sizeof Operator, stosowane do zmiennych tego typu lub typ, zakłada się 0 dla rozmiaru tablicy.

Deklaracje strukturę można również określić bez; niewłaściwy deklarator, gdy są oni członkami innej struktury lub Unii.Nazwy pól są awansować do struktury okalającego.Na przykład struktura nameless wygląda następująco:

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 */

Zobacz struktury i członkami Unii Aby uzyskać informacje o odwołaniach struktury.

KONIEC Microsoft szczególne

Zobacz też

Koncepcje

Declarators i deklaracje zmiennych