Die Forward-Deklaration und der Unterschied zwischen Struct und Typedef-Struct in C

Atika Islam 15 Februar 2024
  1. Erstellen Sie ein C-Projekt
  2. Struktur in C-Sprache
  3. typedef in C
  4. typedef-Struktur in C
  5. Vorwärtsdeklaration in C
Die Forward-Deklaration und der Unterschied zwischen Struct und Typedef-Struct in C

Dieses Tutorial erklärt das Konzept von struct und die Verwendung des Schlüsselworts typedef. Wir werden auch das Konzept der forward declaration in C sehen.

Beginnen wir mit der Erstellung eines C-Projekts.

Erstellen Sie ein C-Projekt

  • Der erste Schritt besteht darin, einen Compiler zu installieren. Schritte zum Herunterladen und Installieren des C-Compilers.
  • Erstellen Sie im nächsten Schritt ein leeres Projekt in C-Sprache, indem Sie in der Menüleiste auf Datei klicken.

    Neues Projekt erstellen

    Projekttyp auswählen

  • Speichern Sie die Datei vor dem Kompilieren.
  • Führen Sie den Code aus. Durch Klick auf kompilieren und ausführen.

    Codeausführungsprozess

  • Ein Ausführungsbildschirm wird angezeigt.

    Ausführungsbildschirm

Struktur in C-Sprache

Struct wird in der C-Sprache verwendet, um die zugehörige Gruppe Datenmitglieder zu erstellen. Die Mitglieder in der Struktur haben nicht denselben Datentyp, und die Gruppe enthält verschiedene Variablen, die an einem Ort aufbewahrt werden.

Wie wir wissen, hat dieses Array die gleiche Art von Membern, aber in einer Struktur können die Datenmember von unterschiedlichen Typen sein, wie int, float und char. Das folgende Code-Snippet beschreibt, wie eine Struktur in der Sprache C erstellt wird.

In diesem Code haben wir die Variable im lokalen Gültigkeitsbereich in der Hauptfunktion deklariert, indem wir den Strukturnamen und seine variable geschrieben haben.

Codebeispiel:

#include <stdio.h>
struct Student {  // Structure declaration
  int rollno;     // Member (int variable)
  char gender;    // Member (char variable)
};                // End the structure with a semicolon
int main() {
  struct Student s1;  // Making a variable of a struct
  s1.rollno = 3;      // assigning value to every member using dot operator
  s1.gender = 'M';
  printf("The name and gender of a student is %d and %c", s1.rollno, s1.gender);
}

Ausgang:

The name and gender of a student is 3 and M

Wir werden die Variable im folgenden Code im globalen Geltungsbereich deklarieren.

Codebeispiel:

#include <stdio.h>

struct Student {  // Structure declaration
  int rollno;     // Member (int variable)
  char gender;    // Member (char variable)
} s1;  // Declared a variable s1 before ending the struct with a semicolon
int main() {
  s1.rollno = 3;  // calling a member using a variable
  s1.gender = 'M';
  printf("The name and gender of a student is %d and %c", s1.rollno, s1.gender);
}

Ausgang:

The name and gender of a student is 3 and M

Auch dies ergibt die gleiche Ausgabe, aber im obigen Code-Snippet haben wir die Variable s1 global deklariert. Wir müssen kein Struct in der Funktion main() definieren.

typedef in C

typedef wird in der C-Sprache verwendet, um unseren bestehenden Datentyp in einen neuen umzubenennen.

Syntax:

typedef<existing_name><alias_name>

Zuerst müssen wir das reservierte Wort von typedef schreiben, dann den bestehenden Namen in C-Sprache und den Namen, den wir zuweisen möchten. Nach der Verwendung von typedef werden wir den alias_name im gesamten Programm verwenden.

Code:

#include <stdio.h>
void main() {
  typedef int integer;  // assigning int a new name of the integer
  integer a = 3;        // variable is declared by integer
  integer b = 4;
  printf("The values of a and b are %d and %d", a,
         b);  // print value of a and b on the screen
}

Ausgang:

The values of a and b are 3 and 4

typedef-Struktur in C

Wir haben gesehen, dass wir die gesamte Struct-Definition in die Funktion main() schreiben müssen. Anstatt jedes Mal struct student zu schreiben, können wir den alten Typ mit typedef durch einen neuen Typ ersetzen.

Typedef hilft uns, unseren Typ in der Sprache C zu erstellen.

Codebeispiel:

#include <stdio.h>   // including header file of input/output
#include <string.h>  // including header file of string

typedef struct Books {  // old type
  char title[30];       // data members of the struct book
  char author[30];
  char subject[50];
  int id;
} Book;  // new type

void main() {
  Book b1;  // variable of a new type

  strcpy(b1.title, "C Programming");          // copy string in title
  strcpy(b1.author, "Robert Lafore");         // copy string in author
  strcpy(b1.subject, "Typedef Struct in C");  // copy string in subject
  b1.id = 564555;                             // assigning id to variable

  printf("Book title is : %s\n", b1.title);  // printing book title on screen
  printf("Book author is : %s\n", b1.author);
  printf("Book subject is : %s\n", b1.subject);
  printf("Book id is  : %d\n", b1.id);
}

Ausgang:

Book title is : C Programming
Book author is : Robert Lafore
Book subject is : Typedef Struct in C
Book id is  : 564555

Im obigen Code haben wir am Ende der Struktur vor dem Semikolon einen neuen Strukturtyp definiert. Dann haben wir diesen neuen Typ in der Funktion main() verwendet.

Dieses typedef hat den Aufwand reduziert, jedes Mal in der main()-Funktion struct zu definieren, um eine Variable zu erstellen.

Vorwärtsdeklaration in C

Die Forward-Deklaration ist eine Deklaration, die einer eigentlichen Definition einer Struct vorangeht. Die Definition ist nicht verfügbar, aber wir können auf den deklarierten Typ verweisen, da es sich um eine Vorab-Deklaration handelt.

Diese Methode wird verwendet, um eine Funktion zu definieren und zu deklarieren. Anstatt eine Funktion über der Funktion main() zu definieren, können wir sie oben deklarieren und unten definieren, was als Vorwärtsdeklaration bezeichnet wird.

Codebeispiel:

#include <stdio.h>
int add(int x, int y);  // (prototype)function declaration

void main() {
  int n1, n2, sum;
  scanf("%d %d", &n1, &n2);                    // taking numbers from user
  sum = add(n1, n2);                           // call to the add function
  printf("The sum of n1 and n2 is %d ", sum);  // display sum on the screen
}
int add(int x, int y)  // function definition
{
  int result;
  result = x + y;
  return result;  // returning the result to the main function
}

Das obige Code-Snippet zeigt, dass wir oben in der Funktion main() einen Funktionsprototypen deklariert haben. Wir rufen die Funktion add() hauptsächlich auf, bevor wir sie definieren, aber sie funktioniert ordnungsgemäß, da der Prototyp bereits definiert wurde.

Dies liegt an der Vorwärtsdeklaration.

Ausgang:

4 5
The sum of n1 and n2 is 9