Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2219 connectés 

  FORUM HardWare.fr
  Programmation

  C : besoin d'explication sur l'affectation par valeur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C : besoin d'explication sur l'affectation par valeur

n°20655
Aricoh
gentil mais fo po pousser
Posté le 27-03-2001 à 09:43:19  profilanswer
 

Hi,
 
suis un newbie en programmation, j'apprend le C où, jusqu'à présent j'avais l'impression de m'amuser. Mais maintenant, j'en suis à la notion de fonctions et le cours qui suit concerne les pointeurs.
 
j'ai qq pb pour bien comprendre cette histoire d'affectation par valeur. J'ai du mal à discerner l'adresse d'une variable de la variable elle-même.
 
Je sais que ce genre de question conne fera sourire les gros pros qui se demanderont bien à quel abruti ils ont affaire. Eux, pas la peine de répondre les gars si c'est pour dire des âneries genre "c'est pourtant simple". Simple pour vous ne signifie pas automatiquement simple pour tout le monde !
 
Si qq aurait la patience d'expliquer ces notions de manière simple, concise et documentée (exemples), ça m'arrangerait vachement !
 
MERCI !!! :p


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
mood
Publicité
Posté le 27-03-2001 à 09:43:19  profilanswer
 

n°20663
BENB
100% Lux.
Posté le 27-03-2001 à 10:17:00  profilanswer
 

Une variable tu peut voir ca comme une valeur (stokee qq par en memoire) ou comme un emplacement memoire (dans lequel il y a une valeur). C'est la dualite de la variable.
 
Quand tu passe un argument par valeur tu cree un deuxieme emplacement en memoire ou tu copie la valeur stockee dans le premier emplacement. Si tu modifie cette valeur ca ne modifie pas celle qui est stockee dans le premier emplacement.
 
Quand tu passe par adresse, tu passe directement l'emplacement memoire.
 
Il est tout a fais normal que tu ne puisse discerner la variable de son adresse, ce que tu dois discerner c'est son adresse de sa valeur...
 
l'adresse c'est la boite au lettres...
la valeur c'est les lettres
la variable c'est le courrier donc des lettres dans une boite aux lettres. Pour prendre les lettres il faut savoir ou est la boite
si tu copie des lettres d'un boite pour les mettre dans une autre, puis que les brules, il te reste les originaux...
 
Une autre analogie c'est le verre d'eau, le verre c'est l'adresse, l'eau la valeur, tu ne peut pas manier l'eau sans verre, mais ce qui t'interresse c'est l'eau pas le verre...
 
J'espere que maintenant c'est simple...

n°20765
Aricoh
gentil mais fo po pousser
Posté le 27-03-2001 à 15:49:50  profilanswer
 

Si je comprend bien (aie aie aie, attention les ziouxxxxxx)
 
:p
 
Si l'on n'utilise pas les pointeurs, il n'y a donc que les variables globales dont on peut utiliser la valeur sans que celle-ci soit copiée ?


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°20775
BENB
100% Lux.
Posté le 27-03-2001 à 16:21:04  profilanswer
 

Le Pb c'est que je ne vois pas comment ne pas utiliser de pointeurs en C...
 
Ce que tu dis est vrai pour un appel de fonction, et non pas pour une affectation a = b+c par exemple
 
int TotoFunct(int a, int b) /* C ansi */
{
 a = b;
 return a;
}
 
main()
{
 int a = 5;
 int b = 3;
 int c = 1;
 c = TotoFunct(a,b)
}
A la fin de ce code on a a=5, b=3, c=3, puisque a et b on ete passe par valeur. l'affectation dans TotoFunct n'a aucune influence sur les parametres passes dans main.
 
en fait ici a dans TotoFunct n'est pas la meme variable que le a de main, simplement le a de TotoFunct reprend la VALEUR de a de main.
 
comme la fonction peut renvoyer une valeur c lui est modifie, et prends la valeur de a de TotoFunct, qui lui-meme la tiens de b de TotoFunct qui lui-meme la tiens de b de main.
 
C'est la meme chose avec un pointeur, mais comme la valeur d'un pointeur c'est l'adresse d'une autre variable ca reviens a passer l'autre variable par adresse.
 
Attention les tableaux sont en fait des pointeurs, ils ne sont pas copies. (on ne copie pas le tableau, mais l'adresse de celui-ci).
 
Mais tout ceci ne concerne que les appels de fonctions...

n°20779
korben
Posté le 27-03-2001 à 16:26:30  profilanswer
 

Pour avoir l'adresse d'une variable, tu écris:
 
adresse=&variable
 
si ensuite tu veux écrie à cette adresse, tu écris:
 
*variable=new variable
 
Maintenant, si j'ai un conseil à te donner, c'est d'acheter le bouquin "Le language C", dans la collection "Le tout en poche", "Campus Press". C'est pas chère (65FF) et tu trouves bcp de chose.
Si tu as d'autres question, envoie moi un mail.
@+

n°20783
BENB
100% Lux.
Posté le 27-03-2001 à 16:31:13  profilanswer
 

Je crois que justement il voulait s'arreter avant le pointeur.
 
Pour le bouquin, moi je conseille Le Language C de Kerighan & Richie chez Masson (pour la VF), il est tout noir, tu ne peut pas le rater, c'est le plus triste. mais un des mieux faits.

n°20820
Aricoh
gentil mais fo po pousser
Posté le 27-03-2001 à 18:40:26  profilanswer
 

ok merci les gars, je n'arrête pas de me cogner la tronche avec un maillet depuis le début de la journée
 
sur le maillet, y a écris "les paramètres d'une fonction sont transmises par valeur", j'ai mis une plombe à le graver
 
j'vous assure, ça marche, même que qd je me zieute dans la glace, je vois la phrase à l'envers sur mon front :o)
 
pour le livre, j'ai le langage C, norme Ansi de Kernighan & Ritchie, mais pour débuter, j'ai pris le C 1er langage par Claude Delannoy, très évolutif et rapidement assimilable mais je commencais juste à sécher sur cette notion de transmission de variable. Comme le cours suivant traite des pointeurs, fallait que je capte bien le truc
 
merci tout l'monde, bien sympatoches les gars
 
:) :) :)


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  C : besoin d'explication sur l'affectation par valeur

 

Sujets relatifs
pb de récup de valeur de variable sous flash 5Les Pro HTML et script CGI, on a besoin de vous ici ....
Besoin d'aide pour orientation étude!!Besoin d'aide !
site d'explication en fr pour phpbb ?A l'aide !!! J'ai besoin d'un script...
J AI BESOIN DE VOTRE AIDE !!!!!!!J'aurais besoin de qq testeurs...(pour 1 forum)
J aurais besoin de qq explication pour bien debuter avec WORLDCRAFT ! 
Plus de sujets relatifs à : C : besoin d'explication sur l'affectation par valeur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR