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

C Übergeben Sie Adressen und Zeiger

C-Pass-Adressen und -Zeiger

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 die Funktionsdefinition aufzunehmen, können wir Zeiger verwenden. Das liegt daran, dass Zeiger zum Speichern von Adressen verwendet werden. Nehmen wir ein Beispiel:


Beispiel:Adressen an Funktionen übergeben

#include <stdio.h>
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\n", 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:

num1 = 10
num2 = 5

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

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

void swap(int* n1, int* n2) {
    ... ..
}

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

Innerhalb der swap() Funktion, *n1 und *n2 getauscht. Daher num1 und num2 werden ebenfalls vertauscht.

Beachten Sie, dass swap() gibt nichts zurück; sein Rückgabetyp ist void .


Beispiel 2:Zeiger an Funktionen übergeben

#include <stdio.h>

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 der unter p gespeicherte Wert , *p , ist anfangs 10.

Wir haben dann den Zeiger p übergeben zum addOne() Funktion. Der ptr Zeiger bekommt diese Adresse in addOne() Funktion.

Innerhalb der Funktion haben wir den unter ptr gespeicherten Wert erhöht um 1 mit (*ptr)++; . Seit ptr und p Zeiger haben beide dieselbe Adresse, *p innerhalb von main() ist auch 11.


C Sprache

  1. C#-Schlüsselwörter und Bezeichner
  2. C# Bitwise- und Bit-Shift-Operatoren
  3. C#-Klasse und -Objekt
  4. Abstrakte C#-Klasse und -Methode
  5. C# Teilklasse und Teilmethode
  6. Versiegelte C#-Klasse und -Methode
  7. Übergeben Sie Arrays an eine Funktion in C
  8. C-Zeiger
  9. Beziehung zwischen Arrays und Zeigern
  10. C-Strukturen und Zeiger