So verwenden Sie die Malloc -Funktion, um eine Array von Strukturen zu erstellen

So verwenden Sie die Malloc -Funktion, um eine Array von Strukturen zu erstellen

Die Struktur ist ein Datentyp, ähnlich dem Array, der in der C-Programmierung verwendet wird. Die Arrays besetzten einige Räume im Speicher des Systems, die entweder dynamisch oder statisch sein können. Die malloc () -Funktion wird für die Deklaration des dynamischen Speichers verwendet.

Ein Array einer Struktur kann entweder mit dem statischen Speicher oder dem dynamischen Speicher deklariert werden. In dieser Beschreibung werden wir das Array von Strukturen mithilfe der MALCOC () -Funktion diskutieren.

So erstellen Sie eine Reihe von Strukturen mit Malloc -Funktion in C

Die Strukturen in der C -Programmierung werden ähnlich wie Klassen verwendet. Die Ausführungszeit der Strukturen ist relativ schneller als die Klassen. Betrachten Sie das Beispiel, um die Struktur zu verstehen:

1
2
3
4
5
6
7
Struktur Mitarbeiter
int emp_id;
char emp_name;
;

Wir haben eine Struktur von “MitarbeiterDas hat zwei weitere Mitglieder; emp_int und emp_char. Wir können ein Array mit den Struct -Mitarbeitern bilden als:

1
Struct Employees EmployeesData [4];

Wir haben ein Array deklariert “Mitarbeiterdata"Verwenden der Struktur"MitarbeiterUnd es gibt 4 Standorte, um die Werte zu speichern. Wenn wir auf die zweiten Elemente des Struct -Arrays zugreifen möchten, die wir verwenden werden, Mitarbeiterdata [1], und in ähnlicher Weise, wenn wir auf die Mitglieder der Elemente zugreifen möchten, die wir verwenden werden, Employedata [1].emp_id.

Hier können wir aber auch die MALCOC () -Funktion verwenden, um die dynamische Speicherzuweisung zu verwenden. Der Vorteil des dynamischen Speichers besteht darin, dass der Raum während der Ausführung des Programms gemäß den Anforderungen verwendet wird. Zu diesem Zeitpunkt verwenden wir die MALOC () -Funktion, die die Anforderung zur Zuweisung eines Speicherblocks zum Heap -Segment des Speichers sendet, der die Daten zufällig speichert. Wenn der Heap -Speicher aufgrund unzureichender Speicherplatz die Anfrage von malloc () nicht unterhalten kann, gibt er die NULL zurück, sonst weist er den angeforderten Block der MALCOC () -Funktion für die Ausführung des Programms zu.

Wenn wir nun die MALCOC () -Funktion für die Deklaration des Arrays von Strukturen verwenden möchten, wird das Programm sein:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#enthalten
#enthalten
int main (int argc, char ** argv)

Typedef Struct

char* emp_name;
int emp_id;
Mitarbeiter;
int num = 2, i;
Mitarbeiter * Employedata = malloc (Num * sizeof * EmployeesData);
für (i = 0; i < num; i++)

EmployeesData [i].emp_name = (char*) malloc (sizeof (char*));
printf ("Mitarbeitername eingeben:");
scanf ("%s", EmployeesData [i].emp_name);
printf ("Mitarbeiter -ID eingeben:");
scanf ("%d", & EmployeesData [i].emp_id);

printf („Bitte geben Sie alle Namen von maximal 8 Zeichen \ n“ ein);
für (i = 0; i < num; i++)
printf ("Mitarbeitername: %s, Mitarbeiter ID: %d \ n", EmployeesData [i].EMP_NAME, EmployeesData [i].emp_id);
kostenlos (EmployeesData);
return (0);

Wir werden eine Textdatei, MyFile1, mit Hilfe des Nano -Editors öffnen und das obige Skript einfügen:

1
$ nano myfile1.C

Verwenden Sie den GCC -Compiler, um die obige Datei zu kompilieren:

1
$ gcc myfile1.c -o myfile1

Wenn die Datei erfolgreich zusammengestellt ist, führen Sie das Programm mit dem Befehl aus:

1
$ ./myFile1

Die Erklärung des obigen Codes lautet:

  • Zuerst haben wir die Bibliotheken von Stdlib hinzugefügt.H (verwendet für die dynamischen Speicherzuweisungsfunktionen) und Stdio.H (verwendet von den anderen Grundfunktionen der C -Programmierung)
  • In der Hauptfunktion haben wir dann die Argc (Argument Count) und Argv (Argumentvektor) übergeben, die für die Zahlen verwendet werden, die von den Benutzern eingegeben werden und auf die Charakterzeiger verweisen
  • Danach haben wir die Struktur von "deklariert" deklariert "MitarbeiterMit zwei Werten EMP_ID und EMP_NAME mit
  • Initialisierte die beiden Variablen num und i; NUM hat den Wert von 2 so zugewiesen, dass zwei Eingaben für Struktur „Mitarbeiter“ einnehmen können
  • Anschließend verwendete die Malloc -Funktion den Speicher gemäß dem Wert von Num dem Zeigerarray (Mitarbeiter)
  • Nahm die Eingabe vom Benutzer und zeigte die Werte mit der for -Schleife an

Notiz: Wir müssen das verwenden “Typedef Struct"Wenn Sie die Struktur deklarieren, müssen wir das Schlüsselwort nicht verwenden"Struktur”Wiederholt.

Eine andere Sache zu beachten ist, dass der Puffer dazu führen kannchar *”Im Malloc -Argument, um die Größe der zu deklarieren EMP_NAME Variable. Dies führt dazu. Dieser Pufferüberlauf erfolgt nicht ständig (meistens wird er zum Laufzeit automatisch vom Compiler verwaltet).

Wenn Sie die Anzahl der Zeichen für den Mitarbeiternamen nicht einschränken möchten, können Sie einfach zuerst die Eingabe für den Mitarbeiternamen in der für die Schleife in einer neuen Variablen annehmen und diese variable Größe in der Malloc -Funktion übergeben.

Abschluss

Der Strukturdatentyp in der C -Programmierung bietet eine bessere Leistung, wenn wir uns mit kleinen Gruppen derselben Werte befassen müssen. In dieser Beschreibung haben wir die Erstellung von Strukturen mit Arrays unter Verwendung der dynamischen Speicherfunktion, die malloc () -Funktion ist, erörtert. Die malloc () -Funktion verwendet nur so viel Speicherblock, der erforderlich ist.