<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Pointer Verständnisfrage]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche gerade Pointer zu verstehen und hätte dazu noch eine Frage:</p>
<p>Ich habe ein paar Zeilen zum testen geschrieben und verstehe in erster Linie nicht ganz, warum in der 14 Zeile nicht die Zahl 3 raus kommt. In Zeile 8 zähle ich ja den Wert von i um eins hoch. Des weiteren habe ich in Zeile 8 noch einen Kommentar geschriebne, dessen &quot;Lösung&quot; mich interessieren würde.</p>
<pre><code>int i= 2;
int* h = &amp;i;

cout &lt;&lt; i &lt;&lt; endl;	// 2
cout &lt;&lt; h &lt;&lt; endl;	// Adresse von i = 2
cout &lt;&lt; *h &lt;&lt; endl;	// Inhalt von i durch den Pointer h auf i

i = *h++;			// Hätte ich hier einfach *h++; schreiben können (also ohne i = )
					// um den gleichen Effekt zu erhalten? Eine Änderung der variable i würde
					// ich ja nur erhalten, wenn ich ++i nutzen würde?!

cout &lt;&lt; i &lt;&lt; endl;	// 2
cout &lt;&lt; h &lt;&lt; endl;	// Pointer auf die Adrese von i++
cout &lt;&lt; *h &lt;&lt; endl; // Hier kommt -858983460 raus...? Warum nicht 3 :) ?
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/317878/pointer-verständnisfrage</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 21:39:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317878.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Jun 2013 15:46:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer Verständnisfrage on Sun, 23 Jun 2013 15:46:29 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche gerade Pointer zu verstehen und hätte dazu noch eine Frage:</p>
<p>Ich habe ein paar Zeilen zum testen geschrieben und verstehe in erster Linie nicht ganz, warum in der 14 Zeile nicht die Zahl 3 raus kommt. In Zeile 8 zähle ich ja den Wert von i um eins hoch. Des weiteren habe ich in Zeile 8 noch einen Kommentar geschriebne, dessen &quot;Lösung&quot; mich interessieren würde.</p>
<pre><code>int i= 2;
int* h = &amp;i;

cout &lt;&lt; i &lt;&lt; endl;	// 2
cout &lt;&lt; h &lt;&lt; endl;	// Adresse von i = 2
cout &lt;&lt; *h &lt;&lt; endl;	// Inhalt von i durch den Pointer h auf i

i = *h++;			// Hätte ich hier einfach *h++; schreiben können (also ohne i = )
					// um den gleichen Effekt zu erhalten? Eine Änderung der variable i würde
					// ich ja nur erhalten, wenn ich ++i nutzen würde?!

cout &lt;&lt; i &lt;&lt; endl;	// 2
cout &lt;&lt; h &lt;&lt; endl;	// Pointer auf die Adrese von i++
cout &lt;&lt; *h &lt;&lt; endl; // Hier kommt -858983460 raus...? Warum nicht 3 :) ?
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2333545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2333545</guid><dc:creator><![CDATA[VIVUSorg]]></dc:creator><pubDate>Sun, 23 Jun 2013 15:46:29 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Verständnisfrage on Sun, 23 Jun 2013 16:01:16 GMT]]></title><description><![CDATA[<p>Hi,<br />
einfache Regel: Trenne immer <code>Inkrement/Dekrement</code> und <code>*</code> , dann passiert dir so etwas nicht. Das Problem hierbei ist, dass <code>++</code> stärker bindet. Es wird also erst <code>h++</code> und dann <code>*h</code> gemacht. Darum kommt da -858983460 heruas, weil der Zeiger nun auf Müll zeigt. Machst du es richtig, kommt dennoch 2 heraus. Du hast den Unterschied zwischen Pre- Postfix nicht verstanden. Prefix liefert den alten Wert zurück, Postfix den neuen.</p>
<p><a href="http://en.cppreference.com/w/cpp/language/operator_precedence" rel="nofollow">http://en.cppreference.com/w/cpp/language/operator_precedence</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2333546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2333546</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 23 Jun 2013 16:01:16 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Verständnisfrage on Sun, 23 Jun 2013 16:01:54 GMT]]></title><description><![CDATA[<p>*h++ ist identisch mit *(h++)</p>
<p>Du erhähst also erst den Zeiger und dereferenzierst dann eine Speicherstelle die dir nicht gehört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2333547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2333547</guid><dc:creator><![CDATA[qweasdyxc]]></dc:creator><pubDate>Sun, 23 Jun 2013 16:01:54 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Verständnisfrage on Sun, 23 Jun 2013 16:13:56 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p><s>Machst du es richtig, kommt dennoch 2 heraus. Du hast den Unterschied zwischen Pre- Postfix nicht verstanden. Prefix liefert den alten Wert zurück, Postfix den neuen.</s></p>
</blockquote>
<p>Murks geschrieben, Sorry. Muss genauer hinschauen. Du hast hier 2 Seiteneffekte ohne <code>sequence point</code> dazwischen. Das darfst du nicht machen, das ist gefährlich, da unklar ist, wann Seiteneffekte eintreten. Hier kann 2 oder 3 das Ergebnis sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2333550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2333550</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 23 Jun 2013 16:13:56 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Verständnisfrage on Sun, 23 Jun 2013 16:23:01 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>out schrieb:</p>
<blockquote>
<p><s>Machst du es richtig, kommt dennoch 2 heraus. Du hast den Unterschied zwischen Pre- Postfix nicht verstanden. Prefix liefert den alten Wert zurück, Postfix den neuen.</s></p>
</blockquote>
<p>Murks geschrieben, Sorry. Muss genauer hinschauen. Du hast hier 2 Seiteneffekte ohne <code>sequence point</code> dazwischen. Das darfst du nicht machen, das ist gefährlich, da unklar ist, wann Seiteneffekte eintreten. Hier kann 2 oder 3 das Ergebnis sein.</p>
</blockquote>
<p>Wenn du es in eine Zeile schreibst. Darum wieder die Regel: Nicht in eine Zeile schreiben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Ich hoffe du Blickst noch durch was ich nun gechrieben hab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2333552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2333552</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 23 Jun 2013 16:23:01 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Verständnisfrage on Sun, 23 Jun 2013 16:25:03 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>out schrieb:</p>
<blockquote>
<p><s>Machst du es richtig, kommt dennoch 2 heraus. Du hast den Unterschied zwischen Pre- Postfix nicht verstanden. Prefix liefert den alten Wert zurück, Postfix den neuen.</s></p>
</blockquote>
<p>Murks geschrieben, Sorry. Muss genauer hinschauen. Du hast hier 2 Seiteneffekte ohne <code>sequence point</code> dazwischen. Das darfst du nicht machen, das ist gefährlich, da unklar ist, wann Seiteneffekte eintreten. Hier kann 2 oder 3 das Ergebnis sein.</p>
</blockquote>
<p>? Das einzig Undefinierte ist hier die letzte Zeile, da sich an der Adresse, auf die h zeigt, kein initialisiertes int-Objekt befindet. Es kann also alles Mögliche ausgegeben werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2333553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2333553</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 23 Jun 2013 16:25:03 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Verständnisfrage on Sun, 23 Jun 2013 16:28:47 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>out schrieb:</p>
<blockquote>
<p>out schrieb:</p>
<blockquote>
<p><s>Machst du es richtig, kommt dennoch 2 heraus. Du hast den Unterschied zwischen Pre- Postfix nicht verstanden. Prefix liefert den alten Wert zurück, Postfix den neuen.</s></p>
</blockquote>
<p>Murks geschrieben, Sorry. Muss genauer hinschauen. Du hast hier 2 Seiteneffekte ohne <code>sequence point</code> dazwischen. Das darfst du nicht machen, das ist gefährlich, da unklar ist, wann Seiteneffekte eintreten. Hier kann 2 oder 3 das Ergebnis sein.</p>
</blockquote>
<p>? Das einzig Undefinierte ist hier die letzte Zeile, da sich an der Adresse, auf die h zeigt, kein initialisiertes int-Objekt befindet. Es kann also alles Mögliche ausgegeben werden.</p>
</blockquote>
<p>Ja, ne so hab ich das nicht gemeint. Ich dachte, er schaut sich den Link an, und macht dann i = (*h)++, worauf sich meine Aussage bezieht.</p>
<p>(Etwas bedüdelt grad)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2333555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2333555</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 23 Jun 2013 16:28:47 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Verständnisfrage on Sun, 23 Jun 2013 18:10:22 GMT]]></title><description><![CDATA[<p>qweasdyxc schrieb:</p>
<blockquote>
<p>*h++ ist identisch mit *(h++)</p>
<p>Du erhähst also erst den Zeiger und dereferenzierst dann eine Speicherstelle die dir nicht gehört.</p>
</blockquote>
<p>Quatsch.<br />
Zusammengegoogeltes Halbwissen.<br />
Du bringst Vorrangregel und Auswertungsreihenfolge durcheinander.<br />
Postfix hat den höheren Rang, der <strong>Wert</strong> eines Postfix(Sub)-Ausdruckes ist aber der Ausgangswert, also h und nicht (h+1).<br />
Und der Wert des Gesamtausdruckes ergibt sich somit als *h.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2333572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2333572</guid><dc:creator><![CDATA[Wutz]]></dc:creator><pubDate>Sun, 23 Jun 2013 18:10:22 GMT</pubDate></item></channel></rss>