<?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-Adresse Frage]]></title><description><![CDATA[<p>hi,</p>
<p>ich versuche grade den qualitativen unterschied zwischen diesen beiden funktionen zu verstehen:</p>
<pre><code class="language-cpp">void testfunktion_1(int &amp; b)
{
	b = 3;
}

void testfunktion_2(int * b)
{
	*b = 6;
}
</code></pre>
<p>gibt es eine argumentation einer dieser zwei arten zeiger bzw. adresse zu übergeben, zu favoriseren ?</p>
<p>ich glaube das obere ist ohnehin kein reines C mehr sondern schon eine C++ erweiterung? kann das sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/216731/pointer-adresse-frage</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 01:28:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216731.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 27 Jun 2008 18:43:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer-Adresse Frage on Fri, 27 Jun 2008 18:43:22 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>ich versuche grade den qualitativen unterschied zwischen diesen beiden funktionen zu verstehen:</p>
<pre><code class="language-cpp">void testfunktion_1(int &amp; b)
{
	b = 3;
}

void testfunktion_2(int * b)
{
	*b = 6;
}
</code></pre>
<p>gibt es eine argumentation einer dieser zwei arten zeiger bzw. adresse zu übergeben, zu favoriseren ?</p>
<p>ich glaube das obere ist ohnehin kein reines C mehr sondern schon eine C++ erweiterung? kann das sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537151</guid><dc:creator><![CDATA[Jogi23423]]></dc:creator><pubDate>Fri, 27 Jun 2008 18:43:22 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Adresse Frage on Fri, 27 Jun 2008 18:53:06 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Stimmt. Das zweite ist ein C++ Feature und nennt sich References.</p>
<p>Bsp:</p>
<pre><code class="language-cpp">void testfunktion_1(int &amp; b)
{
    b = 3;
}

void testfunktion_2(int * b)
{
    *b = 6;
}

int main()
{
    int test=1;

    testfunktion_1(test);
    testfunktion_2(&amp;test);
}
</code></pre>
<p>Der Vorteil von References ist, dass das Datum per Reference übergeben wird und nicht per Value.</p>
<p>mfg bauerb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537159</guid><dc:creator><![CDATA[bauerb]]></dc:creator><pubDate>Fri, 27 Jun 2008 18:53:06 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Adresse Frage on Fri, 27 Jun 2008 19:18:25 GMT]]></title><description><![CDATA[<p>bauerb schrieb:</p>
<blockquote>
<p>Hi!</p>
<p>Stimmt. Das zweite ist ein C++ Feature und nennt sich References.</p>
</blockquote>
<p>Wenn schon, ist das das erste Beispiel.</p>
<blockquote>
<p>Der Vorteil von References ist, dass das Datum per Reference übergeben wird und nicht per Value.</p>
</blockquote>
<p>Und was wird bei einem Zeiger gemacht?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/26836">@topic</a>:<br />
Der Unterschied von Zeiger und Referenzen und deren Vor/Nachteile wird des öfteren Diskutiert. Kanns mal hier suchen, dann findest du bestimmt die letzte, relativ lange Diskussion dazu.</p>
<p>Aber hier kann man schon ein paar Sachen dazu sagen.<br />
1. Bei der Referenz (void testfunktion_1(int &amp; b)) muss sich der Aufrufer der Funktion nicht darum kümmer, wie das jetzt übernommen wird. Beim Zeiger musst du speziell die Adresse übergeben. (Somit ist die Referenz einfacher zu benutzen).<br />
Das führt uns jetzt dahin, dass wir anstatt einen Zeiger auf ein Objekt einfach 0 angeben können, was dann undefiniertes Verhalten in der Funktion hervorruft. (Also müsste man dort noch überprüfen, ob überhaupt ein gültiger Zeiger übergebenworden ist), was bei einer Referenz nicht passieren kann.</p>
<p>EDIT:<br />
Das habe ich gemeint: (gleiche Fragestellung). Da findest du auch noch Verweise auf noch ältere Thraeds. <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="😉"
    /><br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-215245-and-highlight-is-*zeiger*+*referenzen*.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-215245-and-highlight-is-*zeiger*+*referenzen*.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537165</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 27 Jun 2008 19:18:25 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Adresse Frage on Fri, 27 Jun 2008 19:22:08 GMT]]></title><description><![CDATA[<p>bauerb schrieb:</p>
<blockquote>
<p>Hi!</p>
<p>Stimmt. Das zweite ist ein C++ Feature und nennt sich References.</p>
<p>Bsp:</p>
<pre><code class="language-cpp">void testfunktion_1(int &amp; b)
{
    b = 3;
}

void testfunktion_2(int * b)
{
    *b = 6;
}

int main()
{
    int test=1;

    testfunktion_1(test);
    testfunktion_2(&amp;test);
}
</code></pre>
<p>Der Vorteil von References ist, dass das Datum per Reference übergeben wird und nicht per Value.</p>
<p><strong>testfunktion_2(&amp;test);</strong><br />
Hier wird die Adresse von test übergeben - und nicht der Wert!<br />
... und nicht per Value.<strong>?</strong> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>mfg bauerb</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1537172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537172</guid><dc:creator><![CDATA[&amp;lt;oo&amp;gt;]]></dc:creator><pubDate>Fri, 27 Jun 2008 19:22:08 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Adresse Frage on Fri, 27 Jun 2008 19:41:24 GMT]]></title><description><![CDATA[<p>danke für eure antworten.</p>
<p>wie verwende ich den die referenzvariablen in klassen?</p>
<p>scheinbar hab ich da ein problem bei der initialisierung, wenn ich eine referenz als member aufnehmen....</p>
<p>ich muss einer referenz zwingend einen wert zuweisen?! und wenn ich keinen habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537180</guid><dc:creator><![CDATA[Jogi23423]]></dc:creator><pubDate>Fri, 27 Jun 2008 19:41:24 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Adresse Frage on Fri, 27 Jun 2008 19:49:05 GMT]]></title><description><![CDATA[<p>Jogi23423 schrieb:</p>
<blockquote>
<p>danke für eure antworten.</p>
<p>wie verwende ich den die referenzvariablen in klassen?</p>
<p>scheinbar hab ich da ein problem bei der initialisierung, wenn ich eine referenz als member aufnehmen....</p>
<p>ich muss einer referenz zwingend einen wert zuweisen?! und wenn ich keinen habe?</p>
</blockquote>
<p>Du musst eine haben. Die übergibst du dann im ctor. Also in der Initialisierungsliste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537189</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 27 Jun 2008 19:49:05 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Adresse Frage on Fri, 27 Jun 2008 20:03:47 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Jogi23423 schrieb:</p>
<blockquote>
<p>ich muss einer referenz zwingend einen wert zuweisen?! und wenn ich keinen habe?</p>
</blockquote>
<p>Du musst eine haben. Die übergibst du dann im ctor. Also in der Initialisierungsliste.</p>
</blockquote>
<p>Wenn du keinen hast, dann nimmst du halt einen Zeiger und initialisierst ihn mit 0 <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/1537197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537197</guid><dc:creator><![CDATA[Xantus]]></dc:creator><pubDate>Fri, 27 Jun 2008 20:03:47 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Adresse Frage on Sat, 28 Jun 2008 16:57:08 GMT]]></title><description><![CDATA[<p>Der Unterschied zwischen C-Pointer und C++-Referenz besteht darin, dass Du auf den C-Pointer im Speicher zugreifen kannst, während die C++-Referenz &quot;versteckt&quot; gehandhabt wird.</p>
<p>Hier ein Musterprogramm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;conio.h&gt;
using std::cout;
using std::endl;

//globale Variablen
int a = 1;
int b = 2;

void ausgabe()
{
    cout &lt;&lt; &amp;a &lt;&lt; &quot;: &quot; &lt;&lt; a &lt;&lt; &quot;\t &quot; &lt;&lt; &amp;b &lt;&lt; &quot;: &quot; &lt;&lt; b  &lt;&lt; endl &lt;&lt; endl;
}

void erfolgloser_swap( int x, int y )
{
  cout &lt;&lt; &quot;Kopien auf dem Stack: &quot; &lt;&lt; endl;
  cout &lt;&lt; &amp;x &lt;&lt; &quot;: &quot; &lt;&lt; x &lt;&lt; &quot;\t &quot; &lt;&lt; &amp;y &lt;&lt; &quot;: &quot; &lt;&lt; y &lt;&lt; endl;

  int temp = x;
  x = y;
  y = temp;

  cout &lt;&lt; &amp;x &lt;&lt; &quot;: &quot; &lt;&lt; x &lt;&lt; &quot;\t &quot; &lt;&lt; &amp;y &lt;&lt; &quot;: &quot; &lt;&lt; y &lt;&lt; endl;
  cout &lt;&lt; &quot;swap nur lokal erfolgreich.&quot; &lt;&lt; endl;
}

void zeiger_swap( int * x, int * y ) // C-Lösung
{
  int temp = *x; // Inhalts-Operator // Dereferenzierungs-Operator
  *x = *y;
  *y = temp;
}

void referenzen_swap( int &amp; x, int &amp; y ) // C++-Lösung
{
  int temp = x;
  x = y;
  y = temp;
}

int main()
{
    cout &lt;&lt; &quot;Ausgangssituation: &quot; &lt;&lt; endl;
    ausgabe();

    cout &lt;&lt; &quot;Tausch mittels std::swap(x,y): &quot; &lt;&lt; endl;            
    std::swap(a,b); // Methode der Wahl aus der STL
    ausgabe();

    cout &lt;&lt; &quot;Tausch mittels Zeiger: &quot; &lt;&lt; endl;            
    zeiger_swap(&amp;a, &amp;b);
    ausgabe();

    cout &lt;&lt; &quot;Tausch mittels Referenzen: &quot; &lt;&lt; endl;            
    referenzen_swap(a,b);
    ausgabe();

    cout &lt;&lt; &quot;Erfolgloser Tausch, da nur lokale Kopien getauscht werden.&quot; &lt;&lt; endl;            
    erfolgloser_swap(a,b);
    ausgabe();

    cout &lt;&lt; &quot;Tausch mittels Register eax und ebx: &quot; &lt;&lt; endl;        
    //swap (a,b)
    __asm(&quot;mov _b, %eax&quot;); //AT&amp;T Syntax bei Dev-C++
    __asm(&quot;mov _a, %ebx&quot;);
    __asm(&quot;mov %eax, _a&quot;);
    __asm(&quot;mov %ebx, _b&quot;);
    ausgabe();

    getch();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1537585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537585</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Sat, 28 Jun 2008 16:57:08 GMT</pubDate></item></channel></rss>