C Funktion per Referenz aufrufen

C Funktionen

Bei der Übergabe per Referenz ist der formale Parameter ein Zeiger auf die Adresse des aktuellen Arguments. Wenn eine Operation über die Referenz des formalen Parameters ausgeführt wird, entspricht dies der Ausführung der Operation auf dem aktuellen Argument selbst.

Das Übergeben von Zeigern ermöglicht es mehreren Funktionen, auf das Objekt zuzugreifen, auf das der Zeiger verweist, ohne das Objekt als global zugänglich deklarieren zu müssen.

/* 函数定义 */
void swap(int *x, int *y)
{
   int temp;
   temp = *x;    /* 保存地址 x 的值 */
   *x = *y;      /* 把 y 赋值给 x */
   *y = temp;    /* 把 temp 赋值给 y */
  
   return;
}

Weitere Einzelheiten zu Zeigern in C finden Sie imC - PointersKapitel.

Rufen wir nun die Funktion auf, indem wir Werte per Referenz übergeben.swap():

Beispiel

#include <stdio.h>
 
/* Funktionsdeklaration */
void swap(int *x, int *y);
 
int main ()
{
   /* lokale Variablendefinition */
   int a = 100;
   int b = 200;
 
   printf(Vor dem Tauschen, Wert von a: %d\n", a );
   printf(Vor dem Tauschen, Wert b: %d\n", b );
 
   /* Funktion aufrufen, um Werte zu tauschen
* &a stellt einen Zeiger auf a dar, d. h. die Adresse von a
* &b stellt einen Zeiger auf b dar, d. h. die Adresse von b
   */

   swap(&a, &b);
 
   printf(Nach dem Tauschen, Wert von a: %d\n", a );
   printf(Nach dem Tauschen, Wert von b: %d\n", b );
 
   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:

交换前,a 的值: 100
交换前,b 的值: 200
交换后,a 的值: 200
交换后,b 的值: 100

Das Obige zeigt, dass – anders als beim Call-by-Reference – das Call-by-Reference die Werte von a und b innerhalb der Funktion ändert und tatsächlich auch die Werte von a und b außerhalb der Funktion ändert.

C Funktionen

Weitere Erweiterungen