Die Forward-Deklaration und der Unterschied zwischen Struct und Typedef-Struct in C
- Erstellen Sie ein C-Projekt
- Struktur in C-Sprache
-
typedef
in C -
typedef
-Struktur in C - Vorwärtsdeklaration 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. -
Speichern Sie die Datei vor dem Kompilieren.
-
Führen Sie den Code aus. Durch Klick auf
kompilieren und ausführen
. -
Ein Ausführungsbildschirm wird angezeigt.
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