Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Adresses et pointeurs C Pass

Adresses et pointeurs C Pass

Dans ce didacticiel, vous apprendrez à passer des adresses et des pointeurs comme arguments à des fonctions à l'aide d'exemples.

En programmation C, il est également possible de passer des adresses comme arguments aux fonctions.

Pour accepter ces adresses dans la définition de la fonction, nous pouvons utiliser des pointeurs. C'est parce que les pointeurs sont utilisés pour stocker des adresses. Prenons un exemple :

Exemple :transmettre des adresses aux fonctions

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

Lorsque vous exécutez le programme, la sortie sera :

num1 = 10
num2 = 5

L'adresse de num1 et num2 sont passés au swap() fonction utilisant swap(&num1, &num2); .

Pointeurs n1 et n2 acceptez ces arguments dans la définition de la fonction.

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

Quand *n1 et *n2 sont modifiés à l'intérieur du swap() fonction, num1 et num2 à l'intérieur de main() fonction sont également modifiées.

À l'intérieur du swap() fonction, *n1 et *n2 échangé. Par conséquent, num1 et num2 sont également échangés.

Notez que swap() ne renvoie rien ; son type de retour est void .

Exemple 2 :transmission de pointeurs vers des fonctions

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

Ici, la valeur stockée à p , *p , vaut 10 initialement.

Nous avons ensuite passé le pointeur p au addOne() fonction. Le ptr le pointeur obtient cette adresse dans le addOne() fonction.

Dans la fonction, nous avons augmenté la valeur stockée dans ptr par 1 en utilisant (*ptr)++; . Depuis ptr et p les pointeurs ont tous deux la même adresse, *p à l'intérieur de main() est aussi 11.


Langue C

  1. Mots-clés et identifiants C#
  2. Opérateurs de bits et de décalage de bits C#
  3. Classe et objet C#
  4. Classe abstraite et méthode C#
  5. Classe partielle C# et méthode partielle
  6. Classe et méthode scellées C#
  7. Passer des tableaux à une fonction en C
  8. Pointeurs C
  9. Relation entre les tableaux et les pointeurs