Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C - Zeiger

Zeiger in C sind einfach und machen Spaß zu lernen. Einige C-Programmieraufgaben lassen sich einfacher mit Zeigern ausführen, und andere Aufgaben, wie z. B. die dynamische Speicherzuweisung, können ohne die Verwendung von Zeigern nicht ausgeführt werden. Daher ist es notwendig, Zeiger zu lernen, um ein perfekter C-Programmierer zu werden. Fangen wir an, sie in einfachen und leichten Schritten zu lernen.

Wie Sie wissen, ist jede Variable ein Speicherort und für jeden Speicherort ist eine Adresse definiert, auf die mit dem kaufmännischen Und-Operator (&) zugegriffen werden kann, der eine Adresse im Speicher bezeichnet. Betrachten Sie das folgende Beispiel, das die Adresse der definierten Variablen ausgibt −

Live-Demo
#include <stdio.h>

int main () {

   int  var1;
   char var2[10];

   printf("Address of var1 variable: %x\n", &var1  );
   printf("Address of var2 variable: %x\n", &var2  );

   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

Address of var1 variable: bff5a400
Address of var2 variable: bff5a3f6

Was sind Zeiger?

Ein Zeiger ist eine Variable, deren Wert die Adresse einer anderen Variablen ist, d. h. die direkte Adresse des Speicherplatzes. Wie jede Variable oder Konstante müssen Sie einen Zeiger deklarieren, bevor Sie ihn zum Speichern einer Variablenadresse verwenden. Die allgemeine Form einer Pointer-Variablen-Deklaration ist −

type *var-name;

Hier tippen ist der Basistyp des Zeigers; es muss ein gültiger C-Datentyp und var-name sein ist der Name der Zeigervariablen. Das Sternchen *, das zum Deklarieren eines Zeigers verwendet wird, ist das gleiche Sternchen, das für die Multiplikation verwendet wird. In dieser Anweisung wird das Sternchen jedoch verwendet, um eine Variable als Zeiger zu kennzeichnen. Sehen Sie sich einige der gültigen Pointer-Deklarationen an −

int    *ip;    /* pointer to an integer */
double *dp;    /* pointer to a double */
float  *fp;    /* pointer to a float */
char   *ch     /* pointer to a character */

Der tatsächliche Datentyp des Werts aller Zeiger, ob Integer, Float, Character oder auf andere Weise, ist derselbe, eine lange Hexadezimalzahl, die eine Speicheradresse darstellt. Der einzige Unterschied zwischen Zeigern verschiedener Datentypen ist der Datentyp der Variablen oder Konstanten, auf die der Zeiger zeigt.

Wie verwende ich Zeiger?

Es gibt ein paar wichtige Operationen, die wir sehr häufig mit Hilfe von Zeigern durchführen werden. (a) Wir definieren eine Zeigervariable, (b) Weisen Sie einem Zeiger die Adresse einer Variablen zu und (c) Greifen Sie schließlich auf den Wert an der in der Zeigervariablen verfügbaren Adresse zu. Dies geschieht mit dem unären Operator * die den Wert der Variablen zurückgibt, die sich an der durch ihren Operanden angegebenen Adresse befindet. Das folgende Beispiel verwendet diese Operationen −

Live-Demo
#include <stdio.h>

int main () {

   int  var = 20;   /* actual variable declaration */
   int  *ip;        /* pointer variable declaration */

   ip = &var;  /* store address of var in pointer variable*/

   printf("Address of var variable: %x\n", &var  );

   /* address stored in pointer variable */
   printf("Address stored in ip variable: %x\n", ip );

   /* access the value using the pointer */
   printf("Value of *ip variable: %d\n", *ip );

   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

Address of var variable: bffd8b3c
Address stored in ip variable: bffd8b3c
Value of *ip variable: 20

NULL-Zeiger

Es empfiehlt sich immer, einer Zeigervariablen einen NULL-Wert zuzuweisen, falls Sie keine genaue Adresse zuweisen können. Dies geschieht zum Zeitpunkt der Variablendeklaration. Ein Zeiger, dem NULL zugewiesen wird, wird als Null bezeichnet Zeiger.

Der NULL-Zeiger ist eine Konstante mit dem Wert Null, die in mehreren Standardbibliotheken definiert ist. Betrachten Sie das folgende Programm −

Live-Demo
#include <stdio.h>

int main () {

   int  *ptr = NULL;

   printf("The value of ptr is : %x\n", ptr  );
 
   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

The value of ptr is 0

In den meisten Betriebssystemen dürfen Programme nicht auf den Speicher an der Adresse 0 zugreifen, da dieser Speicher vom Betriebssystem reserviert ist. Besondere Bedeutung hat jedoch die Speicheradresse 0; es signalisiert, dass der Zeiger nicht auf eine zugängliche Speicherstelle zeigen soll. Aber per Konvention wird angenommen, dass ein Zeiger, der den Nullwert enthält, auf nichts zeigt.

Um nach einem Nullzeiger zu suchen, können Sie eine 'if'-Anweisung wie folgt verwenden −

if(ptr)     /* succeeds if p is not null */
if(!ptr)    /* succeeds if p is null */

Hinweise im Detail

Zeiger haben viele, aber einfache Konzepte, und sie sind sehr wichtig für die C-Programmierung. Die folgenden wichtigen Zeigerkonzepte sollten jedem C-Programmierer klar sein:−

Sr.No. Konzept &Beschreibung
1 Zeigerarithmetik

Es gibt vier arithmetische Operatoren, die in Zeigern verwendet werden können:++, --, +, -

2 Array von Zeigern

Sie können Arrays definieren, die eine Reihe von Zeigern enthalten.

3 Zeiger zu Zeiger

C ermöglicht es Ihnen, einen Zeiger auf einen Zeiger zu haben und so weiter.

4 Zeiger an Funktionen in C übergeben

Das Übergeben eines Arguments per Referenz oder per Adresse ermöglicht, dass das übergebene Argument in der aufrufenden Funktion durch die aufgerufene Funktion geändert wird.

5 Rückgabezeiger von Funktionen in C

C erlaubt es einer Funktion, einen Zeiger auf die lokale Variable, die statische Variable und den dynamisch zugewiesenen Speicher zurückzugeben.


C Sprache

  1. C-Variablen, Konstanten und Literale
  2. C Lagerklasse
  3. C-Zeiger
  4. Beziehung zwischen Arrays und Zeigern
  5. C Übergeben Sie Adressen und Zeiger
  6. C-Strukturen und Zeiger
  7. Globales Python-Schlüsselwort
  8. C++-Zeiger mit Beispielen
  9. C-Variable, Datentypen, Konstanten
  10. Pointer in C:Was ist Pointer in der C-Programmierung? Typen