Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2015-01-30T21:01:57+01:00Les derniers messages parus sur le forum de Zeste de Savoir.Struct et pointeurs, message #417512015-01-30T21:01:57+01:00Wizix/@Wizixhttps://zestedesavoir.com/forums/sujet/2324/struct-et-pointeurs/?page=1#p41751<p>Je ne cherche pas à compliquer ! Juste à comprendre précisément ! <img alt=";)" src="/static/smileys/clin.png"> </p>
<p>Mais merci de tes précisions!</p>Struct et pointeurs, message #417152015-01-30T17:53:40+01:00simbilou/@simbilouhttps://zestedesavoir.com/forums/sujet/2324/struct-et-pointeurs/?page=1#p41715<figure><blockquote>
<p>Seulement quand tu dis "<code>&</code> te permet d'obtenir l'adresse d'une variable, c'est à dire un pointeur vers cette variable.", veux-tu dire que chaque variable a automatiquement un pointeur à sa création ?</p>
</blockquote>
<figcaption><p><a href="http://zestedesavoir.com/forums/sujet/2324/struct-et-pointeurs/?page=1#p41702">Wizix</a></p></figcaption></figure><p>Une variable a toujours une adresse, tu peux avoir la valeur de l’adresse avec l’opérateur <code>&</code>. Ensuite tu en fait ce que tu veux</p>
<p>J’ai l’impression que tu complique les choses pour rien. Tiens, peut être que tu comprendra mieux en transposant la situation :</p>
<p>Une variable prend toujours une certaine place en mémoire, tu peux avoir la valeur de la taille avec l’opérateur <code>sizeof</code>. Ensuite tu en fait ce que tu veux.</p>Struct et pointeurs, message #417022015-01-30T16:07:21+01:00Wizix/@Wizixhttps://zestedesavoir.com/forums/sujet/2324/struct-et-pointeurs/?page=1#p41702<p>Merci pour cette explication claire.<br>
Seulement quand tu dis "<code>&</code> te permet d'obtenir l'adresse d'une variable, c'est à dire un pointeur vers cette variable.", veux-tu dire que chaque variable a automatiquement un pointeur à sa création ? Car si j'ai bien compris, un pointeur est une "variable" de la valeur de la variable qu'il pointe, et qui contient l'adresse de celle-ci, non?</p>Struct et pointeurs, message #416922015-01-30T15:07:55+01:00entwanne/@entwannehttps://zestedesavoir.com/forums/sujet/2324/struct-et-pointeurs/?page=1#p41692<p><code>&</code> te permet d'obtenir l'adresse d'une variable, c'est à dire un pointeur vers cette variable. Si <code>toto</code> est une variable de type <code>int</code>, <code>&toto</code> sera un <code>int*</code>. Ta fonction <code>imc</code> n'attend pas une <code>Personne</code> en argument, mais un <code>Personne*</code>, <code>&arthur</code> en est un.</p>
<p><code>*</code> réalise l'opération inverse, c'est à dire déréférencer un pointeur. Si <code>tata</code> est un <code>int*</code>, <code>*tata</code> sera un <code>int</code>, correspondant à la valeur pointée.</p>
<p>Je vois que tu utilises la notation <code>-></code> dans ton code, mais peut-être ne comprends-tu pas bien ce que tu fais.</p>
<p><code>personne->weight</code> est équivalent à <code>(*personne).weight</code>. C'est à dire que tu accèdes au membre <code>weight</code> de la valeur référencée par <code>personne</code>.</p>Struct et pointeurs, message #416262015-01-29T20:12:17+01:00Wizix/@Wizixhttps://zestedesavoir.com/forums/sujet/2324/struct-et-pointeurs/?page=1#p41626<p>Arf quand je vous dit que je m'y perd.. Merci de ton aide, ça fonctionne !</p>Struct et pointeurs, message #416242015-01-29T19:51:09+01:00vibrice/@vibricehttps://zestedesavoir.com/forums/sujet/2324/struct-et-pointeurs/?page=1#p41624<p>Dans la mesure où la fonction imc attend un pointeur, son appel devrait être <code>imc(&arthur);</code>.</p>Struct et pointeurs, message #416232015-01-29T19:48:16+01:00Wizix/@Wizixhttps://zestedesavoir.com/forums/sujet/2324/struct-et-pointeurs/?page=1#p41623<p>Bonsoir !</p>
<p>Je continu le tutoriel sur le C. Je suis actuellement rendu aux pointeurs et structures. À vrai dire je m'y perd un peu avec les pointeurs, entre le <strong>*</strong> et le <strong>&</strong>, je m'embrouille totalement. Bref voici un code que je test actuellement : </p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35</pre></div></td><td class="code"><div class="codehilite"><pre><span class="cp">#include <stdio.h></span>
<span class="k">typedef</span> <span class="k">struct</span>
<span class="p">{</span>
<span class="kt">int</span> <span class="n">age</span><span class="p">;</span>
<span class="kt">int</span> <span class="n">weight</span><span class="p">;</span>
<span class="kt">int</span> <span class="n">size</span><span class="p">;</span>
<span class="kt">char</span> <span class="n">gender</span><span class="p">;</span>
<span class="kt">double</span> <span class="n">imc</span><span class="p">;</span>
<span class="p">}</span> <span class="n">Personne</span><span class="p">;</span>
<span class="kt">void</span> <span class="nf">imc</span><span class="p">(</span><span class="n">Personne</span> <span class="o">*</span> <span class="n">personne</span><span class="p">)</span>
<span class="p">{</span>
<span class="kt">int</span> <span class="n">weight</span><span class="p">,</span> <span class="n">size</span><span class="p">;</span>
<span class="n">weight</span> <span class="o">=</span> <span class="n">personne</span> <span class="o">-></span> <span class="n">weight</span><span class="p">;</span>
<span class="n">size</span> <span class="o">=</span> <span class="n">personne</span> <span class="o">-></span> <span class="n">size</span><span class="p">;</span>
<span class="n">personne</span> <span class="o">-></span> <span class="n">imc</span> <span class="o">=</span> <span class="p">(</span><span class="n">size</span> <span class="o">*</span> <span class="n">size</span><span class="p">)</span> <span class="o">/</span> <span class="n">weight</span><span class="p">;</span>
<span class="p">}</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
<span class="n">Personne</span> <span class="n">arthur</span><span class="p">;</span>
<span class="n">arthur</span><span class="p">.</span><span class="n">age</span> <span class="o">=</span> <span class="mi">16</span><span class="p">;</span>
<span class="n">arthur</span><span class="p">.</span><span class="n">weight</span> <span class="o">=</span> <span class="mi">53</span><span class="p">;</span>
<span class="n">arthur</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">171</span><span class="p">;</span>
<span class="n">imc</span><span class="p">(</span><span class="n">arthur</span><span class="p">);</span>
<span class="n">printf</span><span class="p">(</span><span class="s">"%d ans, IMC = %f</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">arthur</span><span class="p">.</span><span class="n">age</span><span class="p">,</span> <span class="n">arthur</span><span class="p">.</span><span class="n">imc</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
</td></tr></table>
<p>Seulement, celui-ci ne compile pas :</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4
5
6</pre></div></td><td class="code"><div class="codehilite"><pre>struct.c: In function ‘main’:
struct.c:30:5: error: incompatible type for argument 1 of ‘imc’
imc(arthur);
^
struct.c:12:6: note: expected ‘struct Personne *’ but argument is of type ‘Personne’
void imc(Personne * personne)
</pre></div>
</td></tr></table>
<p>Ce que je ne comprend pas, c'est pourquoi il n'accepte pas <strong>arthur</strong> comme argument alors qu'il est bien du type <strong>Personne</strong>. </p>
<p>Merci de votre aide!</p>