Leggere in inglese

Condividi tramite


Dichiarazioni di struttura

“Una dichiarazione della struttura„ denominazione di un tipo e specifica una sequenza di valori variabili (denominate “membro„ o “campi„ della struttura) con tipi diversi.Un identificatore facoltativo, denominato “un tag,„ fornisce il nome del tipo di struttura e può essere utilizzato nei riferimenti successivi al tipo di struttura.Una variabile di quel tipo di struttura è contenuta l'intera sequenza definita da quel tipo.Le strutture in C# sono simili ai tipi noti come “registra„ in altri linguaggi.

Sintassi

  • struct-o-unione-identificatore:
    identificatore dell'struct-o-unionescegliere**{** struct-dichiarazione-elenco }

    identificatore dell'struct-o-unione

  • struct-o-unione:
    struct

    union

  • struct-dichiarazione-elenco:
    struct-dichiarazione

    struct-dichiarazione dell'struct-dichiarazione-elenco

Il contenuto della struttura viene definito essere

  • struct-dichiarazione:
    struct-dichiaratore-elenco dell'identificatore-qualificatore-elenco ;

  • identificatore-qualificatore-elenco:
    identificatore-qualificatore-elenco dell'tipo-identificatore scegliere

    identificatore-qualificatore-elenco di tipo-qualificatore scegliere

  • struct-dichiaratore-elenco:
    struct-dichiaratore

    struct-dichiaratore-elenco , struct-dichiaratore

  • struct-dichiaratore:
    declarator

La dichiarazione di un tipo di struttura non accantona lo spazio per una struttura.È solo un modello per le dichiarazioni successive delle variabili di struttura.

Un oggetto definito in precedenza identificatore (tag) può essere utilizzato per fare riferimento a un tipo di struttura definita altrove.in questo caso, struct-dichiarazione-elenco non può essere ripetuto finché la definizione è visibile.Le dichiarazioni dei puntatori alle strutture e dei typedef per i tipi di strutture possono utilizzare il tag della struttura prima che il tipo di struttura è definito.Tuttavia, la definizione della struttura deve essere rilevata prima di tutto effettivo utilizzo della dimensione dei campi.Si tratta di una definizione completa del tipo e il tag del tipo.Per questa definizione venga completata, una definizione di tipo deve essere visualizzati più avanti nello stesso ambito.

struct-dichiarazione-elenco specifica i tipi e i nomi dei membri della struttura.In struct-dichiarazione-elenco l'argomento contiene uno o più dichiarazioni di campo di bit o di variabile.

Ogni variabile dichiarata in struct-dichiarazione-elenco viene definito come membro del tipo di struttura.Dichiarazioni delle variabili in struct-dichiarazione-elenco avere lo stesso formato di altre dichiarazioni delle variabili descritte in questa sezione, ad eccezione del fatto che le dichiarazioni non possono contenere gli identificatori o gli inizializzatori di una classe di archiviazione.I membri della struttura possono avere qualsiasi tipo variabili di tipo void, un tipo incompleto, o un tipo di funzione.

Un membro non può essere dichiarato che il tipo di struttura in cui è presente.Tuttavia, un membro può essere dichiarato come puntatore alla struttura in visualizzato finché il tipo di struttura dispone di un tag.Consente di creare elenchi collegati di strutture.

le strutture seguono la stessa definizione di altri identificatori.Gli identificatori di progettazione devono essere univoci da altri struttura, unione e tag di enumerazione con la stessa visibilità.

ciascuno struct-dichiarazione in struct-dichiarazione-elenco deve essere univoco nell'elenco.Tuttavia, i nomi degli identificatori in un oggetto struct-dichiarazione-elenco non devono essere diverso dai nomi delle variabili comuni o da identificatori in altri elenchi della relativa dichiarazione.

Le strutture annidate sono accessibili anche come se fossero dichiarate a livello di ambito file.Ad esempio, specificata questa dichiarazione:

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

queste dichiarazioni sono entrambe valide:

struct a var3;
struct b var4;

Esempi

Questi esempi vengono illustrate le dichiarazioni di struttura:

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

employee la struttura contiene tre membri: name, ide class.name il membro è una matrice di 20 elementi e id e class sono membri semplici con int e tempo tipo, rispettivamente.l'identificatore employee è l'identificatore della struttura.

struct employee student, faculty, staff;

In questo esempio vengono definiti tre variabili di struttura: student, facultye staff.Ogni struttura presenta lo stesso elenco di tre membri.I membri dichiarati avere il tipo di struttura employee, definito nell'esempio precedente.

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

complex la struttura contiene due membri con float tipo, x e y.Il tipo di struttura non presenta tag ed è pertanto senza nome o anonimo.

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

I primi due membri della struttura sono a char variabile e un puntatore a un oggetto float valore.il terzo membro, next, viene dichiarato come un puntatore al tipo di struttura definita (sample).

le strutture anonime possono essere utili quando il tag denominato non è necessario.Questa situazione si verifica quando una dichiarazione definisce tutte le istanze della struttura.Di seguito è riportato un esempio:

struct
{
    int x;
    int y;
} mystruct;

le strutture incorporate sono spesso anonime.

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

Specifici di Microsoft

Il compilatore consente un non con dimensioni o una matrice di dimensioni zero come ultimo membro di una struttura.Questa operazione può essere utile se la dimensione di una matrice costante diverso quando viene utilizzata in diverse situazioni.La dichiarazione di tali aspetti di una struttura analoga alla seguente:

struct identificatore**{**    impostare-de-dichiarazioni    nome della matrice del tipo[],},

Le matrici non dimensionate possono apparire solo come ultimo membro di una struttura.Le strutture che contengono le dichiarazioni di matrice non dimensionata possono essere annidate all'interno di altre strutture finché non vengono elaborati membro viene dichiarato in tutte le strutture di inclusione.Le matrici di tali strutture non sono consentite.sizeof l'operatore, applicato a una variabile di questo tipo o al tipo stesso, assume 0 per la dimensione della matrice.

Le dichiarazioni di progettazione possono essere specificate senza un dichiaratore quando sono membri di un'altra struttura o unione.I nomi dei campi vengono passati alla struttura di inclusione.Ad esempio, gli aspetti senza nome di una struttura è simile al seguente:

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

vedere struttura e sindacalisti per informazioni sui riferimenti della struttura.

Microsoft FINALE specifico

Vedere anche

Concetti

Dichiaratori e dichiarazioni delle variabili