C Passer des adresses et des pointeurs vers des fonctions

Dans ce didacticiel, vous apprendrez à transmettre 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 fonction, nous pouvons utiliser des pointeurs. C'est parce que les pointeurs sont utilisés pour stocker les adresses. Prenons un exemple:

Exemple: passer des adresses aux fonctions

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

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

 num1 = 10 num2 = 5

Les adresses de num1 et num2 sont transmises à la swap()fonction à l'aide de swap(&num1, &num2);.

Les pointeurs n1 et n2 acceptent ces arguments dans la définition de fonction.

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

Lorsque * n1 et * n2 sont modifiés dans la swap()fonction, num1 et num2 dans la fonction main () sont également modifiés.

À l'intérieur de la swap()fonction, *n1et *n2permuté. Par conséquent, num1 et num2 sont également permutés.

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

Exemple 2: passer des pointeurs aux fonctions

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

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

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

Dans la fonction, nous avons augmenté la valeur stockée à ptr de 1 en utilisant (*ptr)++;. Puisque les pointeurs ptr et p ont tous deux la même adresse, l' *pintérieur main()vaut également 11.

Articles intéressants...