<?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]]></title><description><![CDATA[<p>frage:</p>
<p>wo ist der unterschied?<br />
int <em>a = &amp;b;<br />
int</em> a = &amp;b;</p>
<p>gibst da überhaupt einen?`</p>
<p>ich sehe hier im code, dass wer<br />
return *a<br />
macht.<br />
wenn ich ein Pointer deklariere..muss ich dann immer ein * machen? auch bei der verwendung? dachte immer es reicht wenn ich es nur bei der decklaration mache</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/296881/pointer</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 17:04:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/296881.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Dec 2011 12:58:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to pointer on Wed, 14 Dec 2011 12:58:43 GMT]]></title><description><![CDATA[<p>frage:</p>
<p>wo ist der unterschied?<br />
int <em>a = &amp;b;<br />
int</em> a = &amp;b;</p>
<p>gibst da überhaupt einen?`</p>
<p>ich sehe hier im code, dass wer<br />
return *a<br />
macht.<br />
wenn ich ein Pointer deklariere..muss ich dann immer ein * machen? auch bei der verwendung? dachte immer es reicht wenn ich es nur bei der decklaration mache</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2156833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2156833</guid><dc:creator><![CDATA[plokosi]]></dc:creator><pubDate>Wed, 14 Dec 2011 12:58:43 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Wed, 14 Dec 2011 13:08:25 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int *a;
</code></pre>
<p>und</p>
<pre><code class="language-cpp">int* a;
</code></pre>
<p>sind identisch. Der Unterschied ist Geschmackssache und es gibt für beides Argumente. Einmal fühlt sich ein Pointer wie ein anderer Typ an, was für <code>int* a;</code> spricht. Andererseits macht der Stern, dass nur der folgende bezeichner ein Pointer ist, er verändert den Typ an sich nicht: <code>int* a,b;</code> Dann ist a ein Pointer auf int und b ein int, was für die Schreibweise <code>int *a,b;</code> spricht. Andererseits sagt man auch, dass mehrere Variablendeklarationen in einer Zeile sowieso doof sind. Ein Grund, warum das doof ist, ist genau dies.</p>
<blockquote>
<p>ich sehe hier im code, dass wer<br />
return *a<br />
macht.<br />
wenn ich ein Pointer deklariere..muss ich dann immer ein * machen? auch bei der verwendung? dachte immer es reicht wenn ich es nur bei der decklaration mache</p>
</blockquote>
<p>Das verstehst du dann, wenn du Pointer verstanden hast. Um die das zu erklären, müsste ich Pointer ganz erklären. Das macht aber auch ein Lehrbuch.</p>
<p>Und du solltest dir mal Referenzen anschauen. Die sollten im Lehrbuch noch vor den Pointern kommen und sind ein ähnliches Konzept, aber vielleicht leichter verständlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2156837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2156837</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 14 Dec 2011 13:08:25 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Wed, 14 Dec 2011 13:07:35 GMT]]></title><description><![CDATA[<p>plokosi schrieb:</p>
<blockquote>
<p>frage:</p>
<p>wo ist der unterschied?<br />
int <em>a = &amp;b;<br />
int</em> a = &amp;b;</p>
<p>gibst da überhaupt einen?`</p>
</blockquote>
<p>Nein, die beiden Varianten sind identisch.</p>
<p>plokosi schrieb:</p>
<blockquote>
<p>ich sehe hier im code, dass wer<br />
return *a<br />
macht.<br />
wenn ich ein Pointer deklariere..muss ich dann immer ein * machen? auch bei der verwendung? dachte immer es reicht wenn ich es nur bei der decklaration mache</p>
</blockquote>
<p>Eine Pointer-Variable ist letztendlich auch nur eine Integer-Variable, die eine Speicheradresse hält. Wenn du <code>a</code> (also die Speicheradresse) zurückgeben willst, notierst du <code>return a</code> . Wenn du allerdings den Wert zurückgeben willst, auf den <code>a</code> zeigt, dann musst du den Pointer dereferenzieren, und das geht mit dem *-Operator.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2156838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2156838</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 14 Dec 2011 13:07:35 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Wed, 14 Dec 2011 13:12:58 GMT]]></title><description><![CDATA[<p>plokosi schrieb:</p>
<blockquote>
<p>wo ist der unterschied?<br />
int <em>a = &amp;b;<br />
int</em> a = &amp;b;</p>
</blockquote>
<p>Gibt keinen.</p>
<p>plokosi schrieb:</p>
<blockquote>
<p>ich sehe hier im code, dass wer<br />
return *a<br />
macht.<br />
wenn ich ein Pointer deklariere..muss ich dann immer ein * machen? auch bei der verwendung? dachte immer es reicht wenn ich es nur bei der decklaration mache</p>
</blockquote>
<p>Hast du überhaupt eine Vorstellung davon was ein Pointer ist? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Also: Ein Pointer ist selbst wie eine Variable, die einen Zahlenwert speichert.</p>
<pre><code class="language-cpp">int *p = 0; // p ist jetzt 0
// äquivalent zu:
int *p;
p = 0;
</code></pre>
<p>Dem Zeiger an sich kannst du also jeden Wert zuweisen, den du haben möchtest, wie bei einer normalen Variablen. Interessant wird das Sternchen:</p>
<pre><code class="language-cpp">int b = 6;
int *p = &amp;b; // p hat jetzt den Wert der Adresse von b. Man sagt p zeigt auf b.
*p = 9; // Hier wird es spannend. Man beachte das Sternchen. Nicht p wird ein neuer Wert zugewiesen, sondern b. 
        // Hier wird also der Wert den p hat als Adresse in den Speicher interpretiert (man sagt p wird dereferenziert) 
        // und an diese Stelle wird die 9 geschrieben.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2156839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2156839</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 14 Dec 2011 13:12:58 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Wed, 14 Dec 2011 13:23:03 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Also: Ein Pointer ist selbst wie eine Variable, die einen Zahlenwert speichert.</p>
<pre><code class="language-cpp">int *p = 0; // p ist jetzt 0
// äquivalent zu:
int *p;
p = 0;
</code></pre>
<p>Dem Zeiger an sich kannst du also jeden Wert zuweisen, den du haben möchtest, wie bei einer normalen Variablen.</p>
</blockquote>
<p>Ähh, nein. Probier mal mit was aus, das nicht 0 ist. Pointer speichern keine Zahlen. Pointer speichern Pointer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2156844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2156844</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 14 Dec 2011 13:23:03 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Wed, 14 Dec 2011 13:28:11 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Ähh, nein. Probier mal mit was aus, das nicht 0 ist. Pointer speichern keine Zahlen. Pointer speichern Pointer.</p>
</blockquote>
<p>Wenn du einen Wert nicht zuweisen kannst, hast du offensichtlich den falschen Cast benutzt. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2156846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2156846</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 14 Dec 2011 13:28:11 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Wed, 14 Dec 2011 13:28:24 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Ähh, nein. Probier mal mit was aus, das nicht 0 ist. Pointer speichern keine Zahlen. Pointer speichern Pointer.</p>
</blockquote>
<p>Natürlich speichern sie technisch gesehen Zahlen. Das mag vielleicht nicht vom Standard garantiert sein, ist für das Verständnis aber trotzdem wichtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2156847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2156847</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 14 Dec 2011 13:28:24 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Wed, 14 Dec 2011 13:34:49 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Natürlich speichern sie technisch gesehen Zahlen. Das mag vielleicht nicht vom Standard garantiert sein, ist für das Verständnis aber trotzdem wichtig.</p>
</blockquote>
<p>Dann verstehst du aber falsch oder sehr allgemein. Alles im Computer ist Zahl. Die Zahl die der Pointer repräsentiert ist aber keine Zahl in dem Sinne wie die natürlichen Zahlen. Es ist ein Pointer. Da gelten ganz andere Rechengesetze als für natürliche Zahlen.</p>
<p>Und es ist auch nicht sinnvoll durch reinterpret_casts einem Pointer einen Zahlenwert zuzuweisen der nicht 0 ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2156850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2156850</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 14 Dec 2011 13:34:49 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Wed, 14 Dec 2011 13:45:29 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>cooky451 schrieb:</p>
<blockquote>
<p>Natürlich speichern sie technisch gesehen Zahlen. Das mag vielleicht nicht vom Standard garantiert sein, ist für das Verständnis aber trotzdem wichtig.</p>
</blockquote>
<p>Dann verstehst du aber falsch oder sehr allgemein. Alles im Computer ist Zahl. Die Zahl die der Pointer repräsentiert ist aber keine Zahl in dem Sinne wie die natürlichen Zahlen. Es ist ein Pointer. Da gelten ganz andere Rechengesetze als für natürliche Zahlen.</p>
</blockquote>
<p>Hausnummern dividieren macht auch keinen Sinn, trotzdem würdest du sie als Zahlen bezeichnen? Das Einsehen, dass Pointer im Prinzip Hausnummern von Bytes speichern, bzw. einen Index in den Speicher darstellen, hilft dem Verständnis nun mal enorm auf die Sprünge. &quot;Pointer speichern Pointer&quot; mag durchaus korrekter sein, ist aber leider eine Erklärung, die diese komischen Variablen weiterhin als Blackbox erscheinen lässt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2156853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2156853</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 14 Dec 2011 13:45:29 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Wed, 14 Dec 2011 13:57:55 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Und es ist auch nicht sinnvoll durch reinterpret_casts einem Pointer einen Zahlenwert zuzuweisen der nicht 0 ist.</p>
</blockquote>
<p>In den meisten Fällen nicht, nein. Aber auch hier gibt es Ausnahmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2156858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2156858</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 14 Dec 2011 13:57:55 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Wed, 14 Dec 2011 14:02:22 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Hausnummern dividieren macht auch keinen Sinn, trotzdem würdest du sie als Zahlen bezeichnen?</p>
</blockquote>
<p>Nein. Das wäre der gleiche Fehlschluss wie von den vielen Leuten, die Postleitzahlen, Telefonnummern oder Kontonummern im Computer als arithmetischen Zahlen speichern wollen oder Geld als Fließkommazahl. Äußere Ähnlichkeit der Darstellung impliziert nicht ähnliches Verhalten.</p>
<blockquote>
<p>Das Einsehen, dass Pointer im Prinzip Hausnummern von Bytes speichern, bzw. einen Index in den Speicher darstellen, hilft dem Verständnis nun mal enorm auf die Sprünge.</p>
</blockquote>
<p>Eben. Pointer sind wie Hausnummern. <strong>Das</strong> ist eine gute Metapher <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> . Zahl ist keine gute.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2156859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2156859</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 14 Dec 2011 14:02:22 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Wed, 14 Dec 2011 14:07:06 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Eben. Pointer sind wie Hausnummern. <strong>Das</strong> ist eine gute Metapher <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> . Zahl ist keine gute.</p>
</blockquote>
<p>Hm. Zahlen sind das schon. Vergleiche <a href="http://de.wikipedia.org/wiki/Ordinalzahl" rel="nofollow">Ordinal-</a> und <a href="http://de.wikipedia.org/wiki/Kardinalzahl_%28Mathematik%29" rel="nofollow">Kardinalzahlen</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2156862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2156862</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 14 Dec 2011 14:07:06 GMT</pubDate></item></channel></rss>