Entrée et sortie d'une fonction
Fermé
G-Boy
-
15 nov. 2004 à 15:38
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 - 16 nov. 2004 à 10:54
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 - 16 nov. 2004 à 10:54
A voir également:
- Entrée et sortie d'une fonction
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Airpods 3 date de sortie - Guide
- Serveur entrant et sortant - Guide
5 réponses
blurk
Messages postés
486
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
15 mars 2009
160
16 nov. 2004 à 00:21
16 nov. 2004 à 00:21
bonjour
dans cette fonction,
int TAILLE_TABLEAU est une entrée, c'est à dire que la fonction ne peut pas modifier sa valeur.
tous les autres arguments peuvent servir d'entree sortie
puisque ce sont tous des pointeurs.
d'autre part, en bas de la fonction,
on peut voir return (0);
qui signifie que la fonction retourne 0 après son exécution.
caractéristique d'une entrée: tout type de variable
caractéristique d'une "sortie" toute variable passée par adresse ou pointeur
* mavariable est un pointeur
mavariable[] est un pointeur
mavariable désigne l'adresse de ce pointeur.
lors de l'appel d'une fonction (l'appel, pas la déclaration)
c'est l'adresse qui doit être passée comme argument,
le contenu de la variable pouvant éventuellement être modifié par la fonction.
quand une variable est déclarée comme valeur et non comme pointeur,
exemple : int a;
pour désigner son adresse, c'est &a
exemple:
-déclaration:
void mafonction(int *value);
-appel (avec int a, vu plus haut) :
mafonction (&a);
la valeur de a peut être modifiée par la fonction,
par la modification de *value
cordialement
¤
dans cette fonction,
int TAILLE_TABLEAU est une entrée, c'est à dire que la fonction ne peut pas modifier sa valeur.
tous les autres arguments peuvent servir d'entree sortie
puisque ce sont tous des pointeurs.
d'autre part, en bas de la fonction,
on peut voir return (0);
qui signifie que la fonction retourne 0 après son exécution.
caractéristique d'une entrée: tout type de variable
caractéristique d'une "sortie" toute variable passée par adresse ou pointeur
* mavariable est un pointeur
mavariable[] est un pointeur
mavariable désigne l'adresse de ce pointeur.
lors de l'appel d'une fonction (l'appel, pas la déclaration)
c'est l'adresse qui doit être passée comme argument,
le contenu de la variable pouvant éventuellement être modifié par la fonction.
quand une variable est déclarée comme valeur et non comme pointeur,
exemple : int a;
pour désigner son adresse, c'est &a
exemple:
-déclaration:
void mafonction(int *value);
-appel (avec int a, vu plus haut) :
mafonction (&a);
la valeur de a peut être modifiée par la fonction,
par la modification de *value
cordialement
¤
Utilisateur anonyme
16 nov. 2004 à 01:09
16 nov. 2004 à 01:09
Bonjour blurk, bonjour G-Boy
int TAILLE_TABLEAU est une entrée, c'est à dire que la fonction ne peut pas modifier sa valeur
Pourquoi ?
(Rq: c'est une variable locale à la fonction, jamais utilisée)
* mavariable est un pointeur
mavariable[] est un pointeur
*mavariable est un pointeur (Ok)
mavariable[] est un tableau, non?
tous les autres arguments peuvent servir d'entree sortie
puisque ce sont tous des pointeurs.
mais char SAISIE[] est un tableau local de caractères, non?
Merci blurk pour tes précisions (je connais pas trop le C !)
a+
int TAILLE_TABLEAU est une entrée, c'est à dire que la fonction ne peut pas modifier sa valeur
Pourquoi ?
(Rq: c'est une variable locale à la fonction, jamais utilisée)
* mavariable est un pointeur
mavariable[] est un pointeur
*mavariable est un pointeur (Ok)
mavariable[] est un tableau, non?
tous les autres arguments peuvent servir d'entree sortie
puisque ce sont tous des pointeurs.
mais char SAISIE[] est un tableau local de caractères, non?
Merci blurk pour tes précisions (je connais pas trop le C !)
a+
le cas du passage de paramètre par valeur (c'est un IN) ou par adresse (pointeur IN/OUT), fait que dans le second cas, on peut rajouter const.Ainsi, le paramètre, même passé par adresse, est considéré comme un IN. Et le compilo ne manquera pas de le rappeler si tu essayes d'y toucher.
Et avec const, il y a pleins de déclinaisons...
int *p : pointeur variable et valeur variable
const int *p : pointeur variable et valeur constante
int * const p : pointeur constant et valeur variable
const int * const p : pointeur constant et valeur constante.
Et avec const, il y a pleins de déclinaisons...
int *p : pointeur variable et valeur variable
const int *p : pointeur variable et valeur constante
int * const p : pointeur constant et valeur variable
const int * const p : pointeur constant et valeur constante.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
blurk
Messages postés
486
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
15 mars 2009
160
16 nov. 2004 à 10:54
16 nov. 2004 à 10:54
bonjour philtrain
1
Dans la fonction saisie, le paramètre qui sera passé par valeur à taille tableau ne sera pas modifié par la fonction saisie, car saisie ne connait pas son adresse. TAILLE_TABLEAU peut être modifié à l'intérieur de "saisie", mais cela ne sortira pas de la fonction. C'est la règle en C: pour toucher à une variablepassée en paramète, il faut pouvoir connaitre son adresse.
2
Ca peut paraitre étonnant, mais entre tableau et pointeur,
c'est du pareil au même!
on peut déclarer indifférement:
¤
1
Dans la fonction saisie, le paramètre qui sera passé par valeur à taille tableau ne sera pas modifié par la fonction saisie, car saisie ne connait pas son adresse. TAILLE_TABLEAU peut être modifié à l'intérieur de "saisie", mais cela ne sortira pas de la fonction. C'est la règle en C: pour toucher à une variablepassée en paramète, il faut pouvoir connaitre son adresse.
2
Ca peut paraitre étonnant, mais entre tableau et pointeur,
c'est du pareil au même!
on peut déclarer indifférement:
char *chaine="un exemple "; chaine[10]='!'; printf("%s",chaine); // et on met un ! à la fin de chaine char chaine[]="un exemple "; chaine[10]='?'; printf("%s",chaine); // et on met un ? à la fin de chaine
¤