<?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[Fragen zu Zeigern.]]></title><description><![CDATA[<p>Hallo!</p>
<p>Folgender Code aus einer MFC-Anwendung:</p>
<pre><code class="language-cpp">CMainFrame* pFrame = new CMainFrame;
</code></pre>
<p>So wie ich es kenne ist es doch die Syntax für die Erzeugung eines dynamischen Objekts? Aber der Ungarischen Notation nach, ist es ja ein Zeiger...<br />
Also was ist das jetzt nun - Zeiger oder dynamisches Objekt? <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="🙂"
    /></p>
<p>Eine weitere Frage wäre der Sinn der Verwendung eines Zeigers. Mir ist unklar warum man Zeiger verwendet, wenn man auch so direkt auf Elementvariablen und -methoden zugreifen kann?</p>
<p>A-jage</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/195359/fragen-zu-zeigern</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 23:28:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/195359.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 16 Oct 2007 21:05:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fragen zu Zeigern. on Tue, 16 Oct 2007 21:05:29 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Folgender Code aus einer MFC-Anwendung:</p>
<pre><code class="language-cpp">CMainFrame* pFrame = new CMainFrame;
</code></pre>
<p>So wie ich es kenne ist es doch die Syntax für die Erzeugung eines dynamischen Objekts? Aber der Ungarischen Notation nach, ist es ja ein Zeiger...<br />
Also was ist das jetzt nun - Zeiger oder dynamisches Objekt? <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="🙂"
    /></p>
<p>Eine weitere Frage wäre der Sinn der Verwendung eines Zeigers. Mir ist unklar warum man Zeiger verwendet, wenn man auch so direkt auf Elementvariablen und -methoden zugreifen kann?</p>
<p>A-jage</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386750</guid><dc:creator><![CDATA[a-jage]]></dc:creator><pubDate>Tue, 16 Oct 2007 21:05:29 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Tue, 16 Oct 2007 21:16:29 GMT]]></title><description><![CDATA[<p>Hmm ein dynamisches Objekt ... damit meinst du wahrscheinlich ein Objekt das auf dem Heap liegt, korrekt? Hmm ...<br />
In dem Fall ist es ganz einfach so, dass du jetzt hingehen kannst und von CMainFrame eine Klasse ableiten kannst. Dann kannst du pFrame auf new MyClass zeigen lassen. Und ja es ist auch korrekt das pFrame ein Zeiger ist. Du zeigst auf das Objekt auf dem Heap!<br />
Guck dir mal polimorphie an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386756</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 16 Oct 2007 21:16:29 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Tue, 16 Oct 2007 21:27:36 GMT]]></title><description><![CDATA[<p>a-jage schrieb:</p>
<blockquote>
<p>Aber der Ungarischen Notation nach, ist es ja ein Zeiger</p>
</blockquote>
<pre><code class="language-cpp">CMainFrame* m_iFrame = new CMainFrame;
</code></pre>
<p>und jetzt ist ein integer member!</p>
<p>c++ syntax hat mit ungarischer notation ungefähr gar nix zu tun <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="😉"
    /> was da getan wird, ist einen pointer auf CMainFrame zu deklarieren und zu initialisieren. kann man auch dynamisches objekt nennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386758</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Tue, 16 Oct 2007 21:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Tue, 16 Oct 2007 21:31:36 GMT]]></title><description><![CDATA[<p>pFrame ist ein Zeiger, egal ob es auf ein dynamisches Objekt zeigt oder nicht.</p>
<p>Der Vorteil von Zeigern ist, dass man damit auf des Gleiche Objekt zeigen kann. Somit hab ich keine Kopie sondern beziehe mich exakt auf das Gleiche.<br />
Beispiel Du hast von einem Objekt mehrere Elemente.<br />
Nun brauchst Du aber oft einen Bezug zu einem bestimmten Element in einer anderen Klasse...</p>
<p>Oft ist es Sinnvoller Referenzen statt Zeiger zu benutzen, je nach Fall.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386759</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Tue, 16 Oct 2007 21:31:36 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Tue, 16 Oct 2007 21:38:57 GMT]]></title><description><![CDATA[<p>oh/// so schnell so viele Antworten - eine posotive Überraschung. <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="🙂"
    /></p>
<blockquote>
<p>Beispiel Du hast von einem Objekt mehrere Elemente.<br />
Nun brauchst Du aber oft einen Bezug zu einem bestimmten Element in einer anderen Klasse...</p>
</blockquote>
<p>Ähm - könntest du das bitte näher erklären - mit einem CodeBeispiel? Ist glaub ich das was ich haben möchte... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>A-jage</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386760</guid><dc:creator><![CDATA[a-jage]]></dc:creator><pubDate>Tue, 16 Oct 2007 21:38:57 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Tue, 16 Oct 2007 22:00:05 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class SpellList
{
...
vector&lt;Spell&gt; m_spells; //alle verfügbaren Zaubersprüche
};

class Player
{
...
vector&lt;Spell*&gt; m_currentspells; // Zaubersprüche, die der Spieler besitzt
};

int main()
{
    SpellList sl;
    sl.insert(Spell(&quot;A&quot;, ...));
    sl.insert(Spell(&quot;B&quot;, ...));
    Player p;
    Spell* sp = sl.get_spell_by_name(&quot;A&quot;);
    p.addspell(sp);
    return 0;
}
</code></pre>
<p>in der SpellList sind alle Spells, die es gibt. Nun hat ein Spieler den Spell &quot;A&quot; in seinem &quot;Zauberbuch&quot;, der Spell A belegt aber nicht 2 mal Speicher, sondern nur einmal. Wenn es nun noch mehr Spieler gebene würde, die die gleichen Spells besitzen hättest Du ohne Zeiger jeden Spell mehrmals als Kopie.</p>
<p>Oder Beispiel Risiko. Ein Spieler kann mehrere Länder besitzen.<br />
Also gibt es je Land einen Zeiger auf einen Spieler, der dieses Land gerade Besitzt. Wenn das Land &quot;befreit wird&quot;, dann änder ich den Zeiger auf den neuen Spieler und gut ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386763</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Tue, 16 Oct 2007 22:00:05 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Wed, 17 Oct 2007 10:55:27 GMT]]></title><description><![CDATA[<p>Danke. <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="🙂"
    /> Ich glaub ich hab's geschnackelt.</p>
<p>Aber...</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">class CKlasse
{
void method();
};

CKlasse objekt;
</code></pre>
<p>Man koennte auf method() ja mit...</p>
<pre><code class="language-cpp">objekt.method();
</code></pre>
<p>... zugreifen.</p>
<p>Doch warum machen dann viele es per Zeiger:</p>
<pre><code class="language-cpp">CKlasse* pKlasse = new CKlasse;
pKlasse-&gt;method();
</code></pre>
<p>Ich meine, hier wuerde - aus Anfaengersicht gesehen <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="😉"
    /> - ja einmal ein Speicher fuer das Objekt selbst und noch fuer den Zeiger benoetigt werden.</p>
<p>A-jage</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387045</guid><dc:creator><![CDATA[a-jage]]></dc:creator><pubDate>Wed, 17 Oct 2007 10:55:27 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Wed, 17 Oct 2007 10:59:01 GMT]]></title><description><![CDATA[<p>Entweder die Leute sind von Java nach C++ umgestiegen (in Java muß man Objekte mit new anlegen) oder sie wollen das Objekt etwas länger verwenden als in der Funktion, die es angelegt hat (lokale Variablen werden zerstört, wenn ihr Scope verlassen wird).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387052</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 17 Oct 2007 10:59:01 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Wed, 17 Oct 2007 11:00:38 GMT]]></title><description><![CDATA[<p>Habt Ihr Euch abgesprochen oder wieso taucht diese Woche dauernd die Frage &quot;wofür Zeiger&quot; auf?</p>
<p>Mein Vorschlag: Benutze solange es geht keine Zeiger, es wird irgendwann der Tag kommen, an dem Du die Lebensdauer eines Objektes nicht mehr fest an einen Block binden kannst. Dann wirst Du schon lernen, wofür man Zeiger manchmal eben doch verwenden muss - oder Du liest die anderen Threads zu dem Thema durch <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/1387054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387054</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 17 Oct 2007 11:00:38 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Wed, 17 Oct 2007 11:07:29 GMT]]></title><description><![CDATA[<p><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 />
Leider habe ich mit den Stichwoertern &quot;Zeiger&quot; &quot;Zweck Zeiger&quot; und sogar &quot;Wofuer Zeiger&quot; keinen Beitrag finden koennen, der sich mit meiner Frage beschaeftigt.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a></p>
<blockquote>
<p>...oder sie wollen das Objekt etwas länger verwenden als in der Funktion, die es angelegt hat (lokale Variablen werden zerstört, wenn ihr Scope verlassen wird).</p>
</blockquote>
<p>Koenntest du das vielleicht bitte mit einem Codebeispiel erklaeren...? Wie es waere mit Zeigern &lt;-&gt; Wie es waere ohne Zeiger... Danke! <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="🙂"
    /></p>
<p>A-jage</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387064</guid><dc:creator><![CDATA[a-jage]]></dc:creator><pubDate>Wed, 17 Oct 2007 11:07:29 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Wed, 17 Oct 2007 11:18:24 GMT]]></title><description><![CDATA[<p>Dann nimm doch auch mal &quot;Pointer&quot; in deine Suchbegriffe auf <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>(für Erklärungen über den Sinn von Zeigern empfehle ich mal GPC's Magazin-Artikel <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-124532-and-start-is-0.html" rel="nofollow">&quot;Pointer in C(++)&quot;</a>)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387074</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 17 Oct 2007 11:18:24 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Wed, 17 Oct 2007 11:20:13 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void funktion()
{
   Objekt o; // am ende dieser Funktion wird o zerstört
   Objekt* p = new Objekt(); // dieses Objekt bleibt am Leben, man braucht nur einen Zeiger darauf um damit zu arbeiten
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1387076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387076</guid><dc:creator><![CDATA[Kenner der Zeiger]]></dc:creator><pubDate>Wed, 17 Oct 2007 11:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Wed, 17 Oct 2007 12:39:32 GMT]]></title><description><![CDATA[<p>Kenner der Zeiger schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void funktion()
{
   Objekt o; // am ende dieser Funktion wird o zerstört
   Objekt* p = new Objekt(); // dieses Objekt bleibt am Leben, man braucht nur einen Zeiger darauf um damit zu arbeiten
}
</code></pre>
</blockquote>
<p>Eine Anmerkung zur zweiten Zeile: Der Zeiger 'p' wird am Ende der Funktion natürlich auch gelöscht, lediglich das (mit new erzeugte) Objekt, auf das er zeigt, bleibt bestehen - und wenn du seine Adresse nicht anderweitig speicherst, wirst du nach Ende der Funktion nichts mehr mit dem Objekt machen können.<br />
(das nennt sich dann &quot;Speicherleck&quot;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387156</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 17 Oct 2007 12:39:32 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Wed, 17 Oct 2007 18:20:44 GMT]]></title><description><![CDATA[<p>Doch was für Folgen hat dieses &quot;Zertören&quot; für das weitere Arbeiten..?</p>
<p>Ich meine, man kann doch noch immer auf die Elementvariablen und Elementmethoden zugreifen oder nicht...?</p>
<p>A-jage</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387388</guid><dc:creator><![CDATA[a-jage]]></dc:creator><pubDate>Wed, 17 Oct 2007 18:20:44 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Wed, 17 Oct 2007 18:25:58 GMT]]></title><description><![CDATA[<p>Nein. Der this-Zeiger wird ungültig nachdem der Destruktor aufgerufen wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387393</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 17 Oct 2007 18:25:58 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Wed, 17 Oct 2007 19:06:19 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>Nein. Der this-Zeiger wird ungültig nachdem der Destruktor aufgerufen wurde.</p>
</blockquote>
<p>Genau genommen bleibt der Zeiger gültig, kann aber nur eingeschränkt benutzt werden - bis an der gleichen Stelle wieder ein Objekt gleichen Typs lebt. this wird ungültig - also singulär, sobald der gleiche Speicher für andere Zwecke verwendet (&quot;reused&quot; in standardesisch - IMO allerdings etwas unklar in seiner Bedeutung) oder freigegeben wird - aus diesem Grunde ist es erlaubt, dass der Compiler bei einem delete p den Wert des Zeigers p verändert (der Zeiger darf ohnehin nicht gelesen werden) - das kann beim Debuggen helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387395</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 17 Oct 2007 19:06:19 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Wed, 17 Oct 2007 18:30:34 GMT]]></title><description><![CDATA[<p>a-jage schrieb:</p>
<blockquote>
<p>Doch was für Folgen hat dieses &quot;Zertören&quot; für das weitere Arbeiten..?</p>
<p>Ich meine, man kann doch noch immer auf die Elementvariablen und Elementmethoden zugreifen oder nicht...?</p>
<p>A-jage</p>
</blockquote>
<p>Der Zeiger wird nicht zerstört, er ist halt nur in der Funktion gültig, weil er dort deklariert wurde.<br />
Und ja, du kannst noch drauf zugreifen, aber du kennst ja die Adresse nicht, weil du auf p nicht zugreifen kannst, weil die Variable nur innerhalb der Methode gültig ist.<br />
Aber ums mit meinen Worten zu erklären:<br />
Ein Zeiger &quot;zeigt&quot; auf eine Speicherstelle. Diese kann auch ungültig sein (NULL).<br />
Ein Zeiger ist nur innerhalb seines Bereiches gültig. (Klasse, Methode, global)<br />
Solange der Speicherbereich nicht freigegeben wird (delete), bleibt der Speicherbereich gültig. Man muss nur die Adresse kennen.<br />
rya.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387397</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 17 Oct 2007 18:30:34 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Zeigern. on Wed, 17 Oct 2007 18:59:36 GMT]]></title><description><![CDATA[<p>Ok. Jetzt habe ich es wirklich verstanden, :):)</p>
<p>THX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387425</guid><dc:creator><![CDATA[a-jage]]></dc:creator><pubDate>Wed, 17 Oct 2007 18:59:36 GMT</pubDate></item></channel></rss>