Zeiger gegen Handles in C

Zeiger gegen Handles in C
Wenn es um die Programmierung in C geht, Zeiger Und Griffe sind zwei wesentliche Konzepte bei der Verwaltung von Speicher- und Datenstrukturen, aber sie werden oft verwirrt oder austauschbar verwendet. In C -Programmierung a handhaben ist ein Hinweis auf ein Objekt im Speicher, während a Zeiger ist eine Variable, der die Adresse einer anderen Variablen zugewiesen wird. Beide werden verwendet, um Speicheradressen auf unterschiedliche Weise zu referenzieren und zu manipulieren.

In diesem Artikel werden wir sehen, ob diese Begriffe verwendet werden, um getrennte Dinge zu vermitteln.

Was ist ein Zeiger in C?

Zeiger Speichern Sie die Speicheradresse einer anderen Variablen. A Zeiger wird hergestellt, indem eine Variable des Zeigertyps definiert und die 'verwendet werden&'Operator, um ihm die Adresse einer anderen Variablen zuzuweisen. Zeiger werden verwendet, um indirekt zugreifen und Daten über Speicheradressen ändern. Zeiger Kann verwendet werden, um Informationen zwischen Funktionen zu übertragen und Speicher im Fliege zuzuweisen.

#enthalten
int main ()

int* point_c, c;
C = 10;
printf ("Adresse von C: %p \ n", & c);
printf ("Wert von c: %d \ n \ n", c);
point_c = & c;
printf ("Adresse des Zeigers C: %p \ n", point_c);
printf ("Inhalt des Zeigers C: %d \ n \ n", *point_c);
C = 39;
printf ("Adresse des Zeigers C: %p \ n", point_c);
printf ("Inhalt des Zeigers C: %d \ n \ n", *point_c);
*point_c = 5;
printf ("Adresse von C: %p \ n", & c);
printf ("Wert von c: %d \ n \ n", c);
Rückkehr 0;

Im obigen Code a Zeiger Variable point_c von Typ int und eine normale Ganzzahlvariable c und c wird initialisiert zu 10 und die Adresse von C wird dem Zeiger zugeordnet point_c. Danach der Wert von C wird geändert in 39, aber die point_c wird dann ein anderer Wert zugewiesen, der ist 5, Also wenn der Wert von C wird gedruckt, es ändert den Wert am Speicherort, der von der gezeigt wird point_c Zu 5.

Ausgang

Was sind Griffe in C?

Griffe sind generische Datenstrukturen, die Verweise auf dynamisch zugewiesenen Speicher speichern. Griffe werden verwendet, um Ressourcen in C zu abstrakt und zu verwalten, indem eine Indirektion zwischen der Anwendung und der Ressource bereitgestellt wird. A handhaben wird erstellt, indem Speicher für die Ressource zugewiesen und ein Zeiger auf den zugewiesenen Speicher zurückgegeben wird. Saiten und Arrays sind Beispiele für komplizierte Datenstrukturen, die über die verwaltet werden können Griffe.

Unterschied zwischen Zeigern und Griffen in C

Hier sind einige der wichtigsten Unterschiede zwischen Zeiger Und Griffe in c.

1: Direkter Hinweis auf den Speicherstandort

Einer der Hauptunterschiede zwischen Zeiger Und Griffe ist das Zeiger Verweisen Sie direkt auf einen Speicherort, während Griffe Stellen Sie eine Abstraktion einer Ressource an. Zeiger sind Konstrukte auf niedriger Ebene, die die Details der Speicherverwaltung aufdecken Griffe sind hochrangige Konstrukte, die die Details des Ressourcenmanagements verbergen. Zeiger sind besser für Programmieraufgaben auf niedrigem Niveau wie Systemprogrammierung geeignet Griffe sind eher für Programmieraufgaben auf Anwendungsebene wie GUI-Programmierung geeignet.

2: Sicherheit

Speicheradressen können direkt über die direkte zugegriffen werden Zeiger. Dies bedeutet, dass Daten gespeichert und zugegriffen werden können, insbesondere bei großen Datensätzen. Zeiger bieten auch Flexibilität bei der Programmierung, da sie in einer Vielzahl von Anwendungen verwendet werden können. In diesem Fall haben die Griffe jedoch einen Pluspunkt in der Sicherheit, da sie sicherstellen, dass das Programm nicht direkt auf Speicherorte zugreifen.

3: Effizienz

Griffe kann weniger effizient sein als Zeiger, da sie zusätzliche Speicher- und Verarbeitungsleistung zum Verwalten benötigen. Sie können auch durch die Programmiersprache eingeschränkt werden, da nicht alle Sprachen unterstützen Griffe.

4: Verhalten des Speicherverwaltungsverhaltens

Zeiger Erfordern einer manuellen Speicherverwaltung mit Funktionen wie malloc () und free (). Zeiger kann gefährlich sein, wenn sie nicht ordnungsgemäß verwaltet werden, was zu Speicherlecks, ungültigen Speicherreferenzen und Segmentierungsfehlern führt. Griffe, Stellen Sie auf der anderen Seite eine automatische Speicherverwaltung mithilfe von Funktionen wie Referenzzählung oder Müllsammlung an. Griffe sind robuster und sicherer, um sicherzustellen, dass die Ressourcen immer korrekt verwaltet werden.

Abschluss

Zeiger Und Griffe sind zwei wesentliche Konzepte in der C -Programmierung, die unterschiedlichen Zwecken dienen. Zeiger sind Konstrukte auf niedriger Ebene, die den Speicherstellen direkt verweisen, während Griffe Stellen Sie eine Abstraktion einer Ressource an. Zeiger Erfordern Sie eine manuelle Speicherverwaltung, während Griffe Stellen Sie eine automatische Speicherverwaltung an. Zeiger sind besser für Programmieraufgaben auf niedrigem Niveau geeignet Griffe sind eher für Programmieraufgaben auf Anwendungsebene geeignet. Bei angemessener Verwendung beides Zeiger Und Griffe sind wirksam bei der C -Programmierung.