<?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[Klarheit bei Pointern schaffen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Ich schaue mir (wieder mal) alles rund um die Pointer an und bin gerade auf der Seite hier: <a href="http://www.cplusplus.com/doc/tutorial/pointers/" rel="nofollow">http://www.cplusplus.com/doc/tutorial/pointers/</a></p>
<p>Dort ist dieser Satz enthalten:</p>
<blockquote>
<p>Both the increase (++) and decrease (--) operators have greater operator precedence than the dereference operator (*), but both have a special behavior when used as suffix (the expression is evaluated with the value it had before being increased). Therefore, the following expression may lead to confusion:</p>
<pre><code>*p++
</code></pre>
<p>Because ++ has greater precedence than *, this expression is equivalent to *(p++). Therefore, what it does is to increase the value of p (so it now points to the next element), but because ++ is used as postfix the whole expression is evaluated as the value pointed by the original reference (the address the pointer pointed to before being increased).</p>
</blockquote>
<p>Versteche ich denn das richtig?</p>
<p>bei *p++ hat die Inkrementierung die höhere Priorität als die Dereferenzierung.<br />
Sprich zuerst wird p++ ausgeführt -&gt; der Zeiger wird um 1 verschoben (halt je nach Datentyp-Grösse).<br />
Danach wird das Value aus dem neuen Register zurückgegeben.</p>
<p>Würde ich aber nun (*p)++ schreiben, so wird der Zeiger derefenziert und der Inhalt darin um 1 erhöht (Weil die Klammern eine noch höhere Priorität als die Inkrementierung haben)?</p>
<p>Gruss,<br />
swissdude</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277052/klarheit-bei-pointern-schaffen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 04:23:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277052.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 Nov 2010 10:27:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klarheit bei Pointern schaffen on Fri, 12 Nov 2010 10:27:14 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Ich schaue mir (wieder mal) alles rund um die Pointer an und bin gerade auf der Seite hier: <a href="http://www.cplusplus.com/doc/tutorial/pointers/" rel="nofollow">http://www.cplusplus.com/doc/tutorial/pointers/</a></p>
<p>Dort ist dieser Satz enthalten:</p>
<blockquote>
<p>Both the increase (++) and decrease (--) operators have greater operator precedence than the dereference operator (*), but both have a special behavior when used as suffix (the expression is evaluated with the value it had before being increased). Therefore, the following expression may lead to confusion:</p>
<pre><code>*p++
</code></pre>
<p>Because ++ has greater precedence than *, this expression is equivalent to *(p++). Therefore, what it does is to increase the value of p (so it now points to the next element), but because ++ is used as postfix the whole expression is evaluated as the value pointed by the original reference (the address the pointer pointed to before being increased).</p>
</blockquote>
<p>Versteche ich denn das richtig?</p>
<p>bei *p++ hat die Inkrementierung die höhere Priorität als die Dereferenzierung.<br />
Sprich zuerst wird p++ ausgeführt -&gt; der Zeiger wird um 1 verschoben (halt je nach Datentyp-Grösse).<br />
Danach wird das Value aus dem neuen Register zurückgegeben.</p>
<p>Würde ich aber nun (*p)++ schreiben, so wird der Zeiger derefenziert und der Inhalt darin um 1 erhöht (Weil die Klammern eine noch höhere Priorität als die Inkrementierung haben)?</p>
<p>Gruss,<br />
swissdude</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1979360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1979360</guid><dc:creator><![CDATA[swissdude]]></dc:creator><pubDate>Fri, 12 Nov 2010 10:27:14 GMT</pubDate></item><item><title><![CDATA[Reply to Klarheit bei Pointern schaffen on Fri, 12 Nov 2010 10:35:40 GMT]]></title><description><![CDATA[<p>swissdude schrieb:</p>
<blockquote>
<p>Danach wird das Value aus dem neuen Register zurückgegeben.</p>
</blockquote>
<p>Nein.<br />
*p++ ist das selbe wie</p>
<p>T t=*p;<br />
++p;</p>
<p>also es wird der alte Wert zurück gegeben.</p>
<p>Der Rest ist korrekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1979363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1979363</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 12 Nov 2010 10:35:40 GMT</pubDate></item><item><title><![CDATA[Reply to Klarheit bei Pointern schaffen on Fri, 12 Nov 2010 10:38:20 GMT]]></title><description><![CDATA[<p>Wenn du *p++ schreibst dann bekommst du den Wert *p zurück, änderst aber den pointer, denn dieser zeigt dann auf das folgeelement.</p>
<pre><code class="language-cpp">int arr[] = {0,1,2,3};
int *p = arr;

cout &lt;&lt; *p &lt;&lt; endl;
cout &lt;&lt; *p++ &lt;&lt; endl;
cout &lt;&lt; *p &lt;&lt; endl;
</code></pre>
<p>Verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1979364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1979364</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Fri, 12 Nov 2010 10:38:20 GMT</pubDate></item><item><title><![CDATA[Reply to Klarheit bei Pointern schaffen on Fri, 12 Nov 2010 10:47:46 GMT]]></title><description><![CDATA[<p>huhu</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main()
{
    int ar[5] = {0,1,2,3,4};
    int* pi = &amp;ar[0];

    /*
        post- und prefix operator werden immer zuerst ausgeführt:
            --&gt; pi++
                --&gt; da aber postfix, wird hierbei noch mit dem alten Wert gearbeitet.
                    --&gt; also &quot;praktisch&quot; *pi
    */
    cout &lt;&lt; *pi++; // Ausgabe 0

    cin.get();
    return 0;
}
</code></pre>
<p>Also du musst das so sehen:<br />
- Postix erhöht/verringert zwar den Wert um 1, gibt aber den alten Wert zurück.<br />
- Also erst wenn du das nächste Mal die Variable benutzt, hast du den veränderten Wert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1979365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1979365</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 12 Nov 2010 10:47:46 GMT</pubDate></item><item><title><![CDATA[Reply to Klarheit bei Pointern schaffen on Fri, 12 Nov 2010 10:38:45 GMT]]></title><description><![CDATA[<p>Fast alles ist richtig, jedoch eine grundlegende Sache ist falsch.<br />
Das Postinkrement (i++) bedeutet, i holen und anschließend i ums eins erhöhen.<br />
Das Präinkrement (++i) bedeutet, i ums eins erhöhen und holen.<br />
*p++ bedeutet also, p holen, *p zu dereferenzieren und anschließend p erhöhen.<br />
*(++p) dereferenziert im Gegensatz dazu das <strong>nächste</strong> Element von p.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1979366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1979366</guid><dc:creator><![CDATA[Vicious Falcon]]></dc:creator><pubDate>Fri, 12 Nov 2010 10:38:45 GMT</pubDate></item><item><title><![CDATA[Reply to Klarheit bei Pointern schaffen on Fri, 12 Nov 2010 10:56:51 GMT]]></title><description><![CDATA[<p>Alles klar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Vielen dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1979374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1979374</guid><dc:creator><![CDATA[swissdude]]></dc:creator><pubDate>Fri, 12 Nov 2010 10:56:51 GMT</pubDate></item></channel></rss>