Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C Pass-adressen en -wijzers

C Pass-adressen en pointers

In deze zelfstudie leert u met behulp van voorbeelden adressen en verwijzingen als argumenten aan functies door te geven.

In C-programmering is het ook mogelijk om adressen als argumenten door te geven aan functies.

Om deze adressen in de functiedefinitie te accepteren, kunnen we pointers gebruiken. Dit komt omdat pointers worden gebruikt om adressen op te slaan. Laten we een voorbeeld nemen:


Voorbeeld:adressen doorgeven aan functies

#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;
}

Wanneer u het programma uitvoert, is de uitvoer:

num1 = 10
num2 = 5

Het adres van num1 en num2 worden doorgegeven aan de swap() functie met behulp van swap(&num1, &num2); .

Aanwijzers n1 en n2 accepteer deze argumenten in de functiedefinitie.

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

Wanneer *n1 en *n2 worden gewijzigd binnen de swap() functie, num1 en num2 binnen de main() functie worden ook gewijzigd.

Binnen de swap() functie, *n1 en *n2 verwisseld. Vandaar, num1 en num2 worden ook verwisseld.

Merk op dat swap() retourneert niets; het retourtype is void .


Voorbeeld 2:Pointers naar functies doorgeven

#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 de waarde die is opgeslagen op p , *p , is aanvankelijk 10.

We passeerden toen de aanwijzer p naar de addOne() functie. De ptr aanwijzer krijgt dit adres in de addOne() functie.

Binnen de functie hebben we de waarde verhoogd die is opgeslagen op ptr door 1 met (*ptr)++; . Sinds ptr en p pointers hebben beide hetzelfde adres, *p binnen main() is ook 11.


C Taal

  1. C#-zoekwoorden en -ID's
  2. C# Bitsgewijze en Bit Shift-operators
  3. C# klasse en object
  4. C# abstracte klasse en methode
  5. C# Gedeeltelijke klasse en gedeeltelijke methode
  6. C# verzegelde klasse en methode
  7. Geef arrays door aan een functie in C
  8. C-aanwijzers
  9. Relatie tussen arrays en pointers
  10. C-structuren en aanwijzers
  11. C - Constanten en Letters