Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Strukturverwendung in der C-Sprache

Detaillierte Erläuterung der Strukturverwendung in der C-Sprache

藏色散人
藏色散人Original
2020-03-03 13:48:528238Durchsuche

Detaillierte Erläuterung der Strukturverwendung in der C-Sprache

Detaillierte Erläuterung der Verwendung von struct in der C-Sprache

In der C-Sprache können Sie eine Struktur ( Struktur) zum Speichern einer Gruppe verschiedener Datentypen. Die Definitionsform einer Struktur ist:

struct 结构体名{
    结构体所包含的变量或数组
};

Eine Struktur ist eine Sammlung, die mehrere Variablen oder Arrays enthält. Ihre Typen können gleich oder unterschiedlich sein. Jede dieser Variablen oder Arrays wird als Mitglied der Struktur bezeichnet.

Empfehlen Sie „C Language Tutorial

Bitte sehen Sie sich das folgende Beispiel an:

struct stu{
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //所在学习小组
    float score;  //成绩
};

stu ist der Name der Struktur, die 5 Mitglieder enthält , bzw. Name, Anzahl, Alter, Gruppe, Punktzahl. Strukturelemente werden auf die gleiche Weise wie Variablen und Arrays definiert, mit der Ausnahme, dass sie nicht initialisiert werden können.

Achten Sie auf das Semikolon nach den geschweiften Klammern; es darf nicht fehlen, dies ist eine vollständige Aussage.

Eine Struktur ist auch ein Datentyp, der vom Programmierer definiert wird und mehrere andere Datentypen enthalten kann.

Datentypen wie int, float, char usw. werden von der C-Sprache selbst bereitgestellt und können nicht aufgeteilt werden. Wir nennen sie Basisdatentypen und Strukturen können auch mehrere Basisdatentypen enthalten. Kann andere Strukturen enthalten, die wir komplexe Datentypen oder konstruierte Datentypen nennen.

Strukturvariablen

Da die Struktur ein Datentyp ist, können Sie sie zum Definieren von Variablen verwenden. Zum Beispiel:

struct stu stu1, stu2;

definiert zwei Variablen stu1 und stu2, die beide vom Typ stu sind und aus 5 Mitgliedern bestehen. Beachten Sie, dass das Schlüsselwort struct nicht fehlen darf.

stu ist wie eine „Vorlage“, und die definierten Variablen haben die gleichen Eigenschaften. Die Struktur kann auch mit einer „Zeichnung“ verglichen werden und die Strukturvariablen mit „Teilen“, die auf der Grundlage derselben Zeichnung hergestellt wurden, haben die gleichen Eigenschaften.

Sie können beim Definieren der Struktur auch Strukturvariablen definieren:

struct stu{

char *name; //Name

int num ; Schülernummer

int age; //Alter

char group; //Lerngruppe

//Score

} stu1, stu2;

Fügen Sie die Variable einfach am Ende der Strukturdefinition ein.

Wenn Sie nur zwei Variablen benötigen, stu1 und stu2, und Sie den Strukturnamen nicht später zum Definieren anderer Variablen verwenden müssen, müssen Sie den Strukturnamen beim Definieren nicht wie folgt angeben:

struct{ //No stu

char *name; //Name

int num; //Studentennummer

int age;

char group; //Lerngruppe

float score; //Score

} stu1, stu2;

Das ist einfach zu schreiben, aber weil Da es keinen Strukturnamen gibt, können Sie diese Struktur später nicht zum Definieren neuer Variablen verwenden.

Theoretisch wird jedes Mitglied der Struktur kontinuierlich im Speicher gespeichert, was einem Array sehr ähnlich ist. Die Speicherverteilung der obigen Strukturvariablen stu1 und stu2 ist beispielsweise wie in der folgenden Abbildung dargestellt. belegt insgesamt 4+4+ 4+1+4 = 17 Bytes.

In der spezifischen Implementierung des Compilers kann es jedoch zu Lücken zwischen den einzelnen Mitgliedern kommen. Für stu1 und stu2 gibt es eine 3-Byte-Leerzeichenfüllung zwischen der Mitgliedsvariablengruppe und der Punktzahl (siehe Abbildung unten). . Auf diese Weise berechnet, belegen stu1 und stu2 tatsächlich 17 + 3 = 20 Bytes.

Was die Gründe für die „Risse“ zwischen Mitgliedsvariablen betrifft, werden wir im Abschnitt „Ausrichtung des C-Sprachspeichers zur Verbesserung der Adressierungseffizienz“ im Thema „Grundlagen des C-Sprachspeichers“ ausführlich erläutern.

Erfassung und Zuweisung von Mitgliedern

Strukturen ähneln Arrays. Sie sind auch eine Sammlung von Daten und ihre allgemeine Verwendung ergibt keinen großen Sinn. Arrays verwenden den Index [], um ein einzelnes Element zu erhalten, und Strukturen verwenden Punkte, um ein einzelnes Element zu erhalten. Das allgemeine Format zum Erhalten von Strukturmitgliedern ist:

结构体变量名.成员名;

Auf diese Weise können Sie den Wert des Mitglieds erhalten und dem Mitglied auch einen Wert zuweisen:

#include <stdio.h>
int main(){
    struct{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组
        float score;  //成绩
    } stu1;
    //给结构体成员赋值
    stu1.name = "Tom";
    stu1.num = 12;
    stu1.age = 18;
    stu1.group = &#39;A&#39;;
    stu1.score = 136.5;
    //读取结构体成员的值
    printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);
    return 0;
}

Ergebnis ausführen:

Tom's Die Schülerzahl beträgt 12, das Alter 18 und in Gruppe A liegt die diesjährige Punktzahl bei 136,5!

Zusätzlich zur einzelnen Zuweisung von Werten an Mitglieder können Sie bei der Definition auch Werte als Ganzes zuweisen, zum Beispiel:

struct{
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //所在小组
    float score;  //成绩
} stu1, stu2 = { "Tom", 12, 18, &#39;A&#39;, 136.5 };

Die Gesamtzuweisung ist jedoch auf wann beschränkt Definieren von Strukturvariablen, und Sie können ihnen während der Verwendung nur Werte zuweisen. Den Mitgliedern werden Werte einzeln zugewiesen, was der Zuweisung von Arrays sehr ähnlich ist.

Es ist zu beachten, dass es sich bei der Struktur um einen benutzerdefinierten Datentyp handelt, der eine Vorlage zum Erstellen von Variablen darstellt und keinen Speicherplatz belegt. Nur Strukturvariablen enthalten echte Daten und erfordern Speicherplatz zum Speichern.

Weitere Inhalte zum Thema Programmierung finden Sie in der Spalte Einführung in die Programmierung auf der chinesischen PHP-Website!

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Strukturverwendung in der C-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn