<?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, Übergabe an Methode&#x2F;Funktion]]></title><description><![CDATA[<p>Hey,</p>
<p>kann mir einer sagen, was sich hier genau abspielt?</p>
<pre><code>string* psPointer=new string(&quot;Alt&quot;);

cout &lt;&lt; &quot;\nCallByPointer: &quot;;
callByPointer(psPointer);
cout &lt;&lt; &quot; &quot; &lt;&lt; *psPointer;

[...]
void callByPointer(string* psFunc)
{
	psFunc=new string(&quot;Neu&quot;);
}
</code></pre>
<p>Main:<br />
psPointer liegt auf 0x00321180, Inhalt ist irgendeine Adresse im Heap ab der &quot;Alt&quot; steht.</p>
<p>callByPointer:<br />
psFunc ist 0x00321180, aber nach new ist psFunc 0x003211d8 mit &quot;Neu&quot;. Nach der Rückkehr von callByPointer ist psPointer nach wie vor 0x00321180 und &quot;Alt&quot;.</p>
<p>Ausgabe ist also &quot;Alt&quot;.</p>
<p>Was passiert denn hier? Oder bin ich zu blöd den MSVS Debugger zu lesen?</p>
<p>Ich hätte geschätzt, das psFunc psPointer innerhalb der Funktion darstellt, also dass &quot;Neu&quot; anschliessend auch durch psPointer dargestellt wird. Ist aber nicht so. Verstehe ich nicht, da muss was auf dem Stack passieren was mir entgeht.</p>
<p>Gruß,<br />
xaoC</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/137584/pointer-übergabe-an-methode-funktion</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 18:40:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/137584.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 18 Feb 2006 18:50:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer, Übergabe an Methode&#x2F;Funktion on Sat, 18 Feb 2006 18:50:38 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>kann mir einer sagen, was sich hier genau abspielt?</p>
<pre><code>string* psPointer=new string(&quot;Alt&quot;);

cout &lt;&lt; &quot;\nCallByPointer: &quot;;
callByPointer(psPointer);
cout &lt;&lt; &quot; &quot; &lt;&lt; *psPointer;

[...]
void callByPointer(string* psFunc)
{
	psFunc=new string(&quot;Neu&quot;);
}
</code></pre>
<p>Main:<br />
psPointer liegt auf 0x00321180, Inhalt ist irgendeine Adresse im Heap ab der &quot;Alt&quot; steht.</p>
<p>callByPointer:<br />
psFunc ist 0x00321180, aber nach new ist psFunc 0x003211d8 mit &quot;Neu&quot;. Nach der Rückkehr von callByPointer ist psPointer nach wie vor 0x00321180 und &quot;Alt&quot;.</p>
<p>Ausgabe ist also &quot;Alt&quot;.</p>
<p>Was passiert denn hier? Oder bin ich zu blöd den MSVS Debugger zu lesen?</p>
<p>Ich hätte geschätzt, das psFunc psPointer innerhalb der Funktion darstellt, also dass &quot;Neu&quot; anschliessend auch durch psPointer dargestellt wird. Ist aber nicht so. Verstehe ich nicht, da muss was auf dem Stack passieren was mir entgeht.</p>
<p>Gruß,<br />
xaoC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/997462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/997462</guid><dc:creator><![CDATA[xaoC]]></dc:creator><pubDate>Sat, 18 Feb 2006 18:50:38 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer, Übergabe an Methode&#x2F;Funktion on Sat, 18 Feb 2006 18:59:00 GMT]]></title><description><![CDATA[<p>Du übergibst eine Zeiger auf String, d.h. Du kannst in deiner Funktion den Inhalt<br />
des Strings ändern.</p>
<pre><code>*psFunc=&quot;Neu&quot;;
</code></pre>
<p>Hätte demgemäss zu dem von dir erwarteten Ergebnis geführt.</p>
<p>In deiner Funktion jedoch wird versucht den Pointer selbst zu ändern und das<br />
geht nicht denn der Zeiger selbst wird als Kopie übergeben. Um den Zeiger<br />
zu ändern musst du den Parameter als Pointer auf Pointer übergeben.</p>
<pre><code>void callByPointer(string** ppsFunc)
{
    *ppsFunc=new string(&quot;Neu&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/997470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/997470</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Sat, 18 Feb 2006 18:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer, Übergabe an Methode&#x2F;Funktion on Sat, 18 Feb 2006 19:01:33 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>dann must du natürlich auch schreiben :</p>
<pre><code class="language-cpp">string* psPointer=new string(&quot;Alt&quot;);

cout &lt;&lt; &quot;\nCallByPointer: &quot;;
callByPointer(&amp;psPointer);
cout &lt;&lt; &quot; &quot; &lt;&lt; *psPointer;
delete psPointer;
[...]
void callByPointer(string** ppsFunc)
{
    delete *psFunc;
    *psFunc=new string(&quot;Neu&quot;);
}
</code></pre>
<p>Nur warum benutzt du dynamisch erstellte std::string und keine Referenzen?</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/997472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/997472</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 18 Feb 2006 19:01:33 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer, Übergabe an Methode&#x2F;Funktion on Sun, 19 Feb 2006 01:10:31 GMT]]></title><description><![CDATA[<p>Redhead schrieb:</p>
<blockquote>
<p>Du übergibst eine Zeiger auf String, d.h. Du kannst in deiner Funktion den Inhalt<br />
des Strings ändern.</p>
<pre><code>*psFunc=&quot;Neu&quot;;
</code></pre>
<p>Hätte demgemäss zu dem von dir erwarteten Ergebnis geführt.</p>
<p>In deiner Funktion jedoch wird versucht den Pointer selbst zu ändern und das<br />
geht nicht denn der Zeiger selbst wird als Kopie übergeben. Um den Zeiger<br />
zu ändern musst du den Parameter als Pointer auf Pointer übergeben.</p>
<pre><code>void callByPointer(string** ppsFunc)
{
    *ppsFunc=new string(&quot;Neu&quot;);
}
</code></pre>
</blockquote>
<p>Okay, das klärt's, Merci.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/997601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/997601</guid><dc:creator><![CDATA[xaoC]]></dc:creator><pubDate>Sun, 19 Feb 2006 01:10:31 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer, Übergabe an Methode&#x2F;Funktion on Sun, 19 Feb 2006 01:12:31 GMT]]></title><description><![CDATA[<p>akari schrieb:</p>
<blockquote>
<p>Hallo</p>
<p>dann must du natürlich auch schreiben :</p>
<pre><code class="language-cpp">string* psPointer=new string(&quot;Alt&quot;);

cout &lt;&lt; &quot;\nCallByPointer: &quot;;
callByPointer(&amp;psPointer);
cout &lt;&lt; &quot; &quot; &lt;&lt; *psPointer;
delete psPointer;
[...]
void callByPointer(string** ppsFunc)
{
    delete *psFunc;
    *psFunc=new string(&quot;Neu&quot;);
}
</code></pre>
<p>Nur warum benutzt du dynamisch erstellte std::string und keine Referenzen?</p>
<p>bis bald<br />
akari</p>
</blockquote>
<p>Es war ein Test. Bin drüber gestolpert und wußte nicht was zum Ergebnis führte.<br />
Die Funktion macht herzlich wenig Sinn.</p>
<p>Thx,<br />
xaoC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/997602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/997602</guid><dc:creator><![CDATA[xaoC]]></dc:creator><pubDate>Sun, 19 Feb 2006 01:12:31 GMT</pubDate></item></channel></rss>