<?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[Zeiger auf Zeiger als Methoden-Parameter]]></title><description><![CDATA[<p>Hey,</p>
<p>ich hab grad festgestellt, dass wenn ich einer Methode einen Zeiger übergeb, und diesen dann änder, er nur für die Methode geändert wird. Also hab ich einen Zeiger auf den Zeiger übergeben, das ich er dann auch außerhalb der Methode geändert bleibt. Is das so richtig? Ich kenn das von Pascal nur so, das wenn ich einen Zeiger übergeb un den dann änder, ändert der sich überall und nicht nur für die Methode. Wäre toll, wenn mich da jmd erleuchten könnte ^^</p>
<p>MfG Bergmann.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266137/zeiger-auf-zeiger-als-methoden-parameter</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 13:30:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266137.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 04 May 2010 13:54:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Tue, 04 May 2010 13:54:45 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>ich hab grad festgestellt, dass wenn ich einer Methode einen Zeiger übergeb, und diesen dann änder, er nur für die Methode geändert wird. Also hab ich einen Zeiger auf den Zeiger übergeben, das ich er dann auch außerhalb der Methode geändert bleibt. Is das so richtig? Ich kenn das von Pascal nur so, das wenn ich einen Zeiger übergeb un den dann änder, ändert der sich überall und nicht nur für die Methode. Wäre toll, wenn mich da jmd erleuchten könnte ^^</p>
<p>MfG Bergmann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892280</guid><dc:creator><![CDATA[Bergmann89]]></dc:creator><pubDate>Tue, 04 May 2010 13:54:45 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Tue, 04 May 2010 14:05:00 GMT]]></title><description><![CDATA[<p>Ein Zeiger ist ein Wert, nämlich die Speicheradresse eines Objektes. Wenn du einer Methode einen Zeiger übergibst, wird ein neuer Zeiger mit dem gleichen Wert angelegt. Sprich der Zeiger in der Methode und der Zeiger außerhalb haben den gleichen Wert, bezeichnen also die selbe Speicheradresse und damit das selbe Objekt. Wenn du den Zeiger in der Methode jetzt änderst weist du ihm einen neuen Wert zu, also eine neue Speicheradresse und er zeigt auf ein anderes Objekt als der Zeiger außerhalb.<br />
Wenn du den Zeiger außerhalb der Methode ändern willst, solltest du der Methode keine Kopie des Zeigers geben sondern eine Referenz auf den äußeren Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892288</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 04 May 2010 14:05:00 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Tue, 04 May 2010 14:06:34 GMT]]></title><description><![CDATA[<p>Nein, das ist auch in Pascal nicht so. Was du meinst ist der Unterschied zwischen Call-by-value und call-by-reference.</p>
<p>In Pascal und in C++ werden objekte standardmäßig by value übergeben, d.h. sie werden beim Funktionsaufruf kopiert und die Funktion arbeitet dann mit den Kopien. Ändert die Funktion die Kopien, so bekommt der Rest des Programms dies nicht mit.</p>
<p>Die andere Methode ist Call-by-reference. Das macht man in C++ mittels Referenzen (indem man ein &amp; zum Typen zufügt). In Pascal ist das nötige Schlüsselwort VAR. Dann arbeitet die Funktion tatsächlich mit den übergebenen Objekten und kann diese auch ändern.</p>
<p>Man kann (in Pascal wie auch in C++) natürlich auch Zeiger auf Objekte an eine Funktion übergeben. Dann kann diese Funktion <strong>über</strong> diese Zeiger die dahinterstehenden Objekte manipulieren und dies funktioniert auch ganz hervorragend. Ob Änderungen am Zeiger selbst im Rest des Programms ankommen hängt aber natürlich davon ab, ob der Zeiger per Reference oder by-value übergeben wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892290</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 04 May 2010 14:06:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Tue, 04 May 2010 15:40:11 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>habs verstanden^^ Ich hatte da irgendwo ein Denkfehler, weil ich mittlerweiße ein char*** übergebe, das hat mich wohl leicht verwirrt...</p>
<p>MfG Bergmann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892355</guid><dc:creator><![CDATA[Bergmann89]]></dc:creator><pubDate>Tue, 04 May 2010 15:40:11 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Tue, 04 May 2010 17:41:14 GMT]]></title><description><![CDATA[<p>Bergmann89 schrieb:</p>
<blockquote>
<p>[...] weil ich mittlerweiße ein char*** übergebe, das hat mich wohl leicht verwirrt...</p>
</blockquote>
<p>Du <a href="http://c2.com/cgi/wiki?ThreeStarProgrammer" rel="nofollow">3-Sterne-Programmierer</a>. <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/1892414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892414</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 04 May 2010 17:41:14 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Tue, 04 May 2010 22:39:32 GMT]]></title><description><![CDATA[<p>Hehe^^ Ich weiß aber auch nich wie ich es anders lösen soll. Ich brauch ein dynamisches Array aus Zeigern auf ein dynamisches Char-Array. Und wenn ich dieses Array an die Methode weiter geb, dann hab ich halt 3 Zeiger. Mann könnte ja auch einfach sagen es is ein Array of String, aber wir sollen es erstmal &quot;klassisch&quot; mit char-Pointern machen?! Zur besseren Übersicht könnte ich mir eigene Typen definieren, aber intern wäre es auch nix anderes...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892537</guid><dc:creator><![CDATA[Bergmann89]]></dc:creator><pubDate>Tue, 04 May 2010 22:39:32 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Wed, 05 May 2010 05:59:29 GMT]]></title><description><![CDATA[<p>std::vector<a href="std::string" rel="nofollow">std::string</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892559</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Wed, 05 May 2010 05:59:29 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Wed, 05 May 2010 07:23:49 GMT]]></title><description><![CDATA[<p>Bergmann89 schrieb:</p>
<blockquote>
<p>...Mann könnte ja auch einfach sagen es is ein Array of String, aber wir sollen es erstmal &quot;klassisch&quot; mit char-Pointern machen?!...</p>
</blockquote>
<p>Im &quot;klassischen&quot; (C-Weg) würde ich die Frage vorzugsweise im C-Forum stellen, da die dortigen eher mit Zeigerverrenkungen arbeiten <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>Eine Kombination zwischen &quot;Klassischer&quot; (tendenziell C) und der C++ Programmierung wurde schon erwähnt: Referenzen. Ich würde Referenzen immer den Vorzug geben, wenn ein NULL-Wert nicht zulässig sein soll.</p>
<p>Kleines Beispiel an einer int-Übergabe:</p>
<pre><code class="language-cpp">void foo1(int a) // Ändert nichts, wie in deinem Problem
{
  a = 10;
}

void foo2(int * a) // Der Weg wie unter C
{
  *a = 10;
}

void foo3(int &amp; a) // Unter C++ imho der üblichere Weg
{
  a = 10;
}
</code></pre>
<p>Und man kann durchaus Zeiger mit Referenzen kombinieren. So könnte man z.B. den Übergabeparameter von foo2, wenn man den Zeiger ändern will, in eine Zeigerreferenz ändern &quot;*&amp;&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892564</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 05 May 2010 07:23:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Wed, 05 May 2010 07:43:16 GMT]]></title><description><![CDATA[<p>Bergmann89 schrieb:</p>
<blockquote>
<p>...wir sollen es erstmal &quot;klassisch&quot; mit char-Pointern machen...</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Wieder mal ein Fall von &quot;'klassisch' = 'Lehrer war zu faul, sich in die neue Sprache einzuarbeiten'&quot;...</p>
<p>Kannst Du nix für, solltest Du dem &quot;Lehrer&quot; (oder wer immer die Vorgabe macht) mal stecken: Der von JanJan skizzierte Weg ist seit nunmehr 12 Jahre Standard ... also etwa seit der Einschulung eines heutigen Abiturienten.</p>
<p>Bergmann89 schrieb:</p>
<blockquote>
<p>...aber intern wäre es auch nix anderes...</p>
</blockquote>
<p>Nunja ... mit dem Argument müsste man eigentlich Assembler (wenn nicht noch weiter unten anpacken) programmieren. <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>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892571</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 05 May 2010 07:43:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Wed, 05 May 2010 07:59:28 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Wieder mal ein Fall von &quot;'klassisch' = 'Lehrer war zu faul, sich in die neue Sprache einzuarbeiten'&quot;...</p>
</blockquote>
<p>Vermutlich kann man froh sein dass der Lehrer kein Fahrlehrer geworden ist, sonst müssten die Fahrschüler den Wagen noch &quot;klassisch&quot; mit der Kurbel anwerfern <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/1892580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892580</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 05 May 2010 07:59:28 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Wed, 05 May 2010 08:25:24 GMT]]></title><description><![CDATA[<p>Bergmann89 schrieb:</p>
<blockquote>
<p>Hehe^^ Ich weiß aber auch nich wie ich es anders lösen soll. Ich brauch ein dynamisches Array aus Zeigern auf ein dynamisches Char-Array. Und wenn ich dieses Array an die Methode weiter geb, dann hab ich halt 3 Zeiger.</p>
</blockquote>
<p>Mit &quot;dynamisches Array&quot; meinst Du, dass das Array im Freispeicher angelegt worden ist, oder? Sonst könnte man noch &quot;dynamisch&quot; benutzen, um ein intelligentes Feld zu beschreiben, was automatisch wachsen kann (wie zB vector).</p>
<p>Ich komme allerdings nur auf zwei Sterne. Es sei denn, Du willst der Funktion den Zeiger auf den Zeiger auf das erste Element im Array übergeben. Das müsstest Du aber nur machen, wenn die Funktion den Zeiger auf das erste Element des Zeiger-Arrays verändern soll/will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892593</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 05 May 2010 08:25:24 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Wed, 05 May 2010 13:23:38 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14941">@asc</a>: Habs jetz mit ner Refernz auf den Zeiger gemacht, da hab ich nur noch **&amp;^^<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24868">@krümelkacker</a>: Ja, die Methode soll den Zeiger ändern könne, da es das Array bei bedarf größer machen soll. Also leg ich ein neues Array an, kopier den Inhalt des Alten in das Neue, änder den Zeiger auf das neue und lösch zum Schluss das Alte. Deshalb die 3 Zeiger, oder jetz halt die Referenz auf die 2 Zeiger...</p>
<p>MfG % Thx Bergmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892747</guid><dc:creator><![CDATA[Bergmann89]]></dc:creator><pubDate>Wed, 05 May 2010 13:23:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Wed, 05 May 2010 13:49:18 GMT]]></title><description><![CDATA[<p>Bergmann89 schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24868">@krümelkacker</a>: Ja, die Methode soll den Zeiger ändern könne, da es das Array bei bedarf größer machen soll. Also leg ich ein neues Array an, kopier den Inhalt des Alten in das Neue, änder den Zeiger auf das neue und lösch zum Schluss das Alte. Deshalb die 3 Zeiger, oder jetz halt die Referenz auf die 2 Zeiger...</p>
</blockquote>
<p>Besser wär natürlich wenn du anfängst C++ zu programmieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892763</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Wed, 05 May 2010 13:49:18 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Wed, 05 May 2010 14:07:40 GMT]]></title><description><![CDATA[<p>Janjan schrieb:</p>
<blockquote>
<p>Besser wär natürlich wenn du anfängst C++ zu programmieren.</p>
</blockquote>
<p>Less doch mal den Thread aufmerksam durch: Es ist eine Lehrervorgabe, und einige Lehrer sind Lernresistent. Ich sage nicht, das es keinen Sinn macht niemals mit Zeigern etc. zu hantieren, würde dies aber erst machen, nachdem man sich schon ein wenig mit Programmlogik etc. beschäftigt hat (Sprich anfangs gleich Dinge wie std::string und in begrenzten Umfang std::vector verwendet [Man muss ja nicht alle Funktionalitäten kennen lernen, sondern nur das anfänglich nötigste]).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892776</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 05 May 2010 14:07:40 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Zeiger als Methoden-Parameter on Wed, 05 May 2010 15:39:36 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>seh ich auch so. Vlt denkt unser Prof, dass wir das nich brauchen, weil wir vorher Java hatten un da drauf haben sollten . . . wer weiß. Ich werd nochma mit dem reden, denn in der 2. Aufgabe sollen wir das dann alles auf CString umbauen, ob wir da auch den normalen string nehmen können (wäre ja das einfachste). Ich hätt es sowieso anders gemacht. Erst string, das man's versteht und dann auf Array of Char umbauen. Das hätte meiner Meinung nach mehr Sinn...</p>
<p>MfG Bergmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892836</guid><dc:creator><![CDATA[Bergmann89]]></dc:creator><pubDate>Wed, 05 May 2010 15:39:36 GMT</pubDate></item></channel></rss>