PROBLEME AVEC LES PARAMETTRES D'UNE FONCTION en C
jechmaki masudi
Messages postés
23
Statut
Membre
-
ElementW Messages postés 5690 Statut Contributeur -
ElementW Messages postés 5690 Statut Contributeur -
VOICI MON header:
#ifndef ECHANGE_H_INCLUDED
#define ECHANGE_H_INCLUDED
void echange(int a,int b);
#endif // ECHANGE_H_INCLUDED
et SON IMPLMENTATION EN .C
#include <stdio.h>
void echange(int a,int b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
en main j'ai
#include <stdio.h>
void main()
{
int nb1=12,nb2=3;
echange(nb1,nb2);
printf("%d",nb1);
printf("%d",nb1);
}
Apres compilation,j'ai toujours le meme resultat,donc:nb1=12 et nb2=3.
AIDEZ MOI SVP.
#ifndef ECHANGE_H_INCLUDED
#define ECHANGE_H_INCLUDED
void echange(int a,int b);
#endif // ECHANGE_H_INCLUDED
et SON IMPLMENTATION EN .C
#include <stdio.h>
void echange(int a,int b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
en main j'ai
#include <stdio.h>
void main()
{
int nb1=12,nb2=3;
echange(nb1,nb2);
printf("%d",nb1);
printf("%d",nb1);
}
Apres compilation,j'ai toujours le meme resultat,donc:nb1=12 et nb2=3.
AIDEZ MOI SVP.
A voir également:
- PROBLEME AVEC LES PARAMETTRES D'UNE FONCTION en C
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
1 réponse
Bonsoir, ça ne semble pas évident au premier abord mais en fait, ta fonction
J'explique: en C, tout est copié d'une fonction à l'autre. Tout. Que ce soit un
Donc quand tu appelles la fonction
Pour pouvoir changer le contenu d'une variable, dans ce cas, il faut utiliser un pointeur, qui pointera vers la zone de la mémoire qui contient le contenu de la variable.
Ce qui donnera la fonction suivante:
echange... ne fait rien.
J'explique: en C, tout est copié d'une fonction à l'autre. Tout. Que ce soit un
int, un
unsigned byte, un
struct, ou même un pointeur (
void*par exemple).
Donc quand tu appelles la fonction
echange(nb1,nb2), les paramètres nb1 et nb2 sont copiés et la fonction bénéficie de sa propre copie.
Pour pouvoir changer le contenu d'une variable, dans ce cas, il faut utiliser un pointeur, qui pointera vers la zone de la mémoire qui contient le contenu de la variable.
Ce qui donnera la fonction suivante:
void echange(int* a,int* b)Qui donc se fera appeler comme ceci:
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
echange(&nb1,&nb2);C'est pas forcément façile à comprendre au début, et mes explications ne sont pas complètes; je te propose de lire la partie sur les pointeurs du tutoriel de C d'Openclassrooms.