|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2011 Messages : 34 ![]() |
Bonjour,
je débute dans le langage C et je ne comprend pas pourquoi le programme suivant: Code :
En effet quand je l'appelle, le message suivant apparaît: aire.c: In function âmainâ: aire.c:11:16: attention : âaireâ is used uninitialized in this function [-Wuninitialized] Pourtant, dans le main calculeraire s'applique à 1.5 et aire et suite à l'appel de calculeraire (1.5,aire), aire va contenir M_PI*1.5*1.5 ? Merci. |
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() |
le variable aire n"est initialiser
Code :
__________________
Si tu aimes ma Réponse pense à cliquer sur
|
||
|
00
|
|
|
#3 |
|
Membre habitué
![]() Loïc Étudiant Inscription : octobre 2009 Messages : 83 ![]() |
En effet tu ne passais pas ton paramètre 'a' par référence ou pointeur du coup quand tu appellais la fonction il ne modifiait pas le paramètre.
|
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2011 Messages : 34 ![]() |
Rebonjour,
ma variable aire est initialisée dans le main (?): double aire. Faut-il l'initialiser avec une valeur quelconque comme 1.5 ? Je ne comprends pas non plus pourquoi passer en argument &a dans calculeraire, c'est-à-dire l'adresse de la variable a. Ce ne serait pas plutôt *a, c'est-à-dire le contenu de la variable pointé par a qu'il faudrait passer en argument? Et dernière question: le fait d'écrire a = M_PI*r*r, ça veut dire que dans le contenu de a, on met M_PI*r*r, donc on modifie la variable a et dc pourquoi s'embêter avec les * et & ? Merci. PS: ok à l'avenir je ne confondrais plus C# et C |
|
|
00
|
|
|
#5 | ||||||
|
Membre habitué
![]() Loïc Étudiant Inscription : octobre 2009 Messages : 83 ![]() |
Par défaut les variables sont passé par copie.
Donc quand tu appelles ta fonction : Code :
Mais celui que tu as donné en paramètre lui n'est pas modifié. Pour modifier le paramètre il faut soit le passer via les pointeur car tu lui donneras l'adresse mémoire de ton paramètre. Ex : Code :
Ex: Code :
Et ta fonction ne modifiait pas non plus la variable donc tu faisais un printf sur une variable non initialisée Essaie de toujours initialiser tes variables, en général on met 0 si tu ne connais pas sa valeur à la déclaration. |
||||||
|
|
10
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2011 Messages : 34 ![]() |
Ok j'ai compris!
Merci! |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com