C Adressen und Zeiger an Funktionen übergeben

In diesem Tutorial lernen Sie anhand von Beispielen, Adressen und Zeiger als Argumente an Funktionen zu übergeben.

In der C-Programmierung ist es auch möglich, Adressen als Argumente an Funktionen zu übergeben.

Um diese Adressen in der Funktionsdefinition zu akzeptieren, können wir Zeiger verwenden. Dies liegt daran, dass Zeiger zum Speichern von Adressen verwendet werden. Nehmen wir ein Beispiel:

Beispiel: Übergeben Sie Adressen an Funktionen

 #include void swap(int *n1, int *n2); int main() ( int num1 = 5, num2 = 10; // address of num1 and num2 is passed swap( &num1, &num2); printf("num1 = %d", num1); printf("num2 = %d", num2); return 0; ) void swap(int* n1, int* n2) ( int temp; temp = *n1; *n1 = *n2; *n2 = temp; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 num1 = 10 num2 = 5

Die Adressen von num1 und num2 werden mit an die swap()Funktion übergeben swap(&num1, &num2);.

Die Zeiger n1 und n2 akzeptieren diese Argumente in der Funktionsdefinition.

 void swap(int* n1, int* n2) (… ) 

Wenn * n1 und * n2 innerhalb der swap()Funktion geändert werden, werden auch num1 und num2 innerhalb der main () - Funktion geändert.

Innerhalb der swap()Funktion *n1und *n2getauscht. Daher werden auch num1 und num2 vertauscht.

Beachten Sie, dass swap()nichts zurückgegeben wird. Der Rückgabetyp ist void.

Beispiel 2: Übergeben von Zeigern an Funktionen

 #include void addOne(int* ptr) ( (*ptr)++; // adding 1 to *ptr ) int main() ( int* p, i = 10; p = &i; addOne(p); printf("%d", *p); // 11 return 0; )

Hier beträgt der bei p ,, gespeicherte Wert *panfänglich 10.

Wir haben dann den Zeiger p an die addOne()Funktion übergeben. Der ptr-Zeiger erhält diese Adresse in der addOne()Funktion.

Innerhalb der Funktion haben wir den bei ptr gespeicherten Wert mit 1 um 1 erhöht (*ptr)++;. Da ptr- und p-Zeiger beide dieselbe Adresse haben, ist im *pInneren main()auch 11.

Interessante Beiträge...