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.