Struktur (struct) in C [Vollständige Anleitung]

Struktur (struct) in C [Vollständige Anleitung]

Eine Struktur ist als Sammlung gleicher/unterschiedlicher Datentypen definiert. Alle Datenelemente sind somit logisch zusammengehörig gruppiert und können über Variablen angesprochen werden.

Inhaltsverzeichnis:

  1. Grundlagen der Struktur in C
  2. Strukturdeklaration
    2.1. Markierte Struktur
    2.2. Strukturvariablen
    2.3. Typ definierte Strukturen
  3. Strukturinitialisierung in C
  4. Auf Strukturen in C zugreifen
  5. Array von Strukturen in C
  6. Verschachtelte Strukturen in C

Beginnen wir mit der Struktur (struct) in C.

Grundlagen der Struktur in C

"Struktur "Schlüsselwort wird verwendet, um die Struktur zu identifizieren.

Beispiel:

struct studentDetails {

char name[10];
char gender[2]; // F for female or M for male
int number;
char parentsName[20];
char address[20];

};

Speicherzuweisung

  • Immer werden zusammenhängende (benachbarte) Speicherplätze verwendet, um Strukturelemente im Speicher zu speichern. Betrachten Sie das obige Beispiel, um zu verstehen, wie Speicher für Strukturen zugewiesen wird.

  • Im obigen Programm sind 5 Elemente für die Struktur deklariert. In einem 32-Bit-Compiler werden 4 Byte Speicher vom int-Datentyp belegt. Jeweils 1 Byte Speicher wird vom Datentyp char belegt.

  • Speicher wird nur reserviert, wenn die obige Definition Variablen zugeordnet ist. Das heißt, sobald die Struktur definiert ist, müssen sie deklariert werden. Dann werden nur 56 Byte Speicherplatz reserviert.

Strukturdeklaration

Die Struktur kann auf drei verschiedene Arten deklariert werden:

1:Markierte Struktur
2:Strukturvariablen
3:Typdefinierte Strukturen

1:Markierte Struktur

Der Strukturname mit dem Tag-Namen wird als Tag-Struktur bezeichnet. Der Tag-Name ist der Name der Struktur.

struct studentDetails {

char name[10];
char gender[2]; // F for female and M for male
int number;
char parentsName[20];
char address[20];

};
  • Hier ist studentDetails der Tag-Name.
  • Um den Speicher für die Struktur zuzuweisen, müssen wir die Variable wie unten gezeigt deklarieren

struct studentDetails Jack,Jonas;

Sobald die Strukturvariablen deklariert sind, weist der Compiler Speicher für die Struktur zu, also sind 32 Bytes für die Variable Jonas und weitere 32 Bytes für die Variable Jack reserviert. Die Größe des zugewiesenen Speichers ist die Summe der Größe der einzelnen Mitglieder

2:Strukturvariablen

Es ist möglich, Variablen einer Struktur zu deklarieren, entweder zusammen mit der Strukturdefinition oder nachdem die Struktur definiert wurde.

Die Deklaration von Strukturvariablen ähnelt der Deklaration jeder normalen Variablen eines anderen Datentyps.

struct Student {
    	char name[25];
    	int age;
    	char branch[10];
    	//F for female and M for male
    	char gender;
	} S1,S2 ; 

Beachten Sie, dass 40 Byte Speicher für die Variable S1 und weitere 22 Byte Speicher für die Variable S2 zugewiesen sind.

Hinweis: Wir vermeiden diese Art der Definition und Deklaration der Strukturvariablen aus folgenden Gründen:

  • Ohne ein Tag ist es nicht möglich, Variablen in späteren Phasen innerhalb der Funktionen zu deklarieren.
  • Es ist nicht möglich, sie als Parameter in der Funktion zu verwenden, da alle Parameter deklariert werden müssen.
  • Wir können sie nur am Anfang des Programms definieren. In solchen Situationen werden sie als globale Variablen behandelt. In der strukturierten Programmierung ist es besser, die Verwendung von globalen Variablen zu vermeiden.

3:Typisierte definierte Struktur

Die mit dem Schlüsselwort typedef verknüpfte Strukturdefinition wird als typdefinierte Struktur bezeichnet. Dies ist die leistungsstärkste Art, die Struktur zu definieren

typedef struct Person 
{ 
	int age; 
	char name[25]; 
}p1,p2,p3;

Strukturinitialisierung in C

Es kann auf verschiedene Arten initialisiert werden

Methode 1 :Geben Sie die Initialisierer in geschweiften Klammern und durch Kommas getrennt an, wenn die Variablen wie unten gezeigt deklariert sind:

struct Student {
    char name[25];
    int age;
    char branch[10];
    //F for female and M for male
    char gender;
}S1 = {"John",14,"CSE","M"};

Methode 2 :Geben Sie die Initialisierer in geschweiften Klammern und durch Kommas getrennt an, wenn die Variablen wie unten gezeigt deklariert sind:

struct Student
{
    char name[25];
    int age;
    char branch[10];
    //F for female and M for male
    char gender;
};

struct S1 = {"John",14,"CSE","M"};

Auf Strukturen in C zugreifen

Wir können auf zwei Arten auf die Struktur zugreifen:

  1. Durch . (Element- oder Punktoperator)
  2. By -> ( Strukturzeigeroperator)
#include<stdio.h>

struct Student
{
    char name[25];
    int age;
    char branch[10];
    //F for female and M for male
    char gender;
};

int main()
{
    struct Student s1;
    
 // s1 is a variable of Student type and 
// age,name,branch,gender is a member of StudeNT and assigning values to them  using // dot(.)operator
        
    s1.age = 18;
    s1.name = "John";
    s1.branch = "C.S.E";
    s1.gender = "F";
    
    /*
        displaying the stored values
    */
    printf("Name of Student 1: %s\n", s1.name);
    printf("Age of Student 1: %d\n", s1.age);
    printf("Branch of Student 1: %s\n", s1.branch);
    printf("Gender of Student 1: %s\n", s1.gender);
    
    return 0;
}

Ausgabe:

Name of student 1: John
Age of Student 1: 18
Branch of Student 1: C.S.E
Gender of Student 1:F

Array von Strukturen in C

Das Array von Strukturen in C wird verwendet, um Informationen über verschiedene Mitglieder verschiedener Datentypen zu speichern. Es wird auch als Sammlung von Strukturen bezeichnet.

#include <stdio.h>

struct Employee
{
    char name[10];
    int sal;
};

int main() {

struct Employee emp[2];

for(int i = 0; i<2 ;i++){

printf("%d employee name",i+1);
scanf("%s",emp[i].name);
printf("salary of %d employee",i+1);
scanf("%d",&emp[i].sal);

}

return 0;

}

Ausgabe:

1 employee name John
salary of 1 employee 120000
2 employee name Jonas
salary of 2 employee 130000

Verschachtelte Strukturen in C

Verschachtelte Struktur bedeutet Struktur in Struktur. Da wir Mitglieder innerhalb der Struktur deklariert haben, können wir die Struktur deklarieren.

#include <stdio.h>

struct Student
{
    // here additionalInfo is a structure
    struct additionaInfo
    {
        char address[20];
        char parentsname[30];
        int mobileno;
        
    }info;
    
    char collegeId[10];
    char name[10];
    int age;
    
} stu;

int main()
{
printf("Give Student college id:");
scanf("%s",stu.collegeId);
printf("Give Student Name:");
scanf("%s",stu.name);
printf("Give Student age:");
scanf("%d",stu.age);
printf("Give Student address:");
scanf("%s",stu.info.address);
printf("Give Student parentsName:");
scanf("%s",stu.info.parentsname);
printf("Give Student mobileno:");
scanf("%d",stu.info.mobileno);

return 0;

}

Ausgabe:

Give Student college id:12345
Give Student Name: John
Give Student age:20
Give Student address: Bangalore
Give Student parentsName: Jonas
Give Student mobileno : 12456

Mit diesem Artikel bei OpenGenus müssen Sie eine vollständige Vorstellung von Strukturen (Struct) in der Programmiersprache C / C++ haben.