<?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[Zeigerinitialisierung]]></title><description><![CDATA[<p>Hallo,</p>
<p>werden Zeigervariablen nach Standard mit 0 initialisiert?</p>
<p>Hintergrund: Ich habe:</p>
<pre><code class="language-cpp">std::map&lt;std::string, blah*&gt; ptrmap
</code></pre>
<p>Wenn ich nun:</p>
<pre><code class="language-cpp">blah* p = ptrmap[&quot;blah&quot;]
</code></pre>
<p>aufrufe, welchen Wert hat p, wenn der Zeiger vorher noch nicht in der map war? Ist er 0 oder einfach einen zufälligen Wert? Was sagt der C++-Standard?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/181230/zeigerinitialisierung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 04:42:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181230.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 11 May 2007 09:34:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeigerinitialisierung on Fri, 11 May 2007 09:34:28 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>werden Zeigervariablen nach Standard mit 0 initialisiert?</p>
<p>Hintergrund: Ich habe:</p>
<pre><code class="language-cpp">std::map&lt;std::string, blah*&gt; ptrmap
</code></pre>
<p>Wenn ich nun:</p>
<pre><code class="language-cpp">blah* p = ptrmap[&quot;blah&quot;]
</code></pre>
<p>aufrufe, welchen Wert hat p, wenn der Zeiger vorher noch nicht in der map war? Ist er 0 oder einfach einen zufälligen Wert? Was sagt der C++-Standard?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282877</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Fri, 11 May 2007 09:34:28 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerinitialisierung on Fri, 11 May 2007 09:42:38 GMT]]></title><description><![CDATA[<p>Der C++ Standard sagt, daß der Wert im Zweifelsfall default-initialisiert wird. Aber was das für build-in-Typen genau heißt, bin ich mir nicht ganz sicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282881</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 11 May 2007 09:42:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerinitialisierung on Fri, 11 May 2007 09:45:08 GMT]]></title><description><![CDATA[<p>tntnet schrieb:</p>
<blockquote>
<p>werden Zeigervariablen nach Standard mit 0 initialisiert?</p>
</blockquote>
<p>Nein, Variablen werden grundsätzlich nicht initialisiert. Ausnahme sind statische und globale Variablen, und natürlich Objekte mit Konstruktoren.</p>
<blockquote>
<p>welchen Wert hat p, wenn der Zeiger vorher noch nicht in der map war? Ist er 0 oder einfach einen zufälligen Wert? Was sagt der C++-Standard?</p>
</blockquote>
<p>0. Der operator[] von std::map fügt ein default-initialisiertes Objekt ein, wenn der Schlüssel noch nicht in der Map war, und gibt es zurück. Im Falle von Pointern und anderen primitiven Typen ist das also 0.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282882</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 11 May 2007 09:45:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerinitialisierung on Fri, 11 May 2007 09:49:27 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>0. Der operator[] von std::map fügt ein default-initialisiertes Objekt ein, wenn der Schlüssel noch nicht in der Map war, und gibt es zurück. Im Falle von Pointern und anderen primitiven Typen ist das also 0.</p>
</blockquote>
<p>und was ist, wenn man 0 als datum in die map eingetragen hat?<br />
dann kann man's ja nicht von nichtvorhandenen einträgen unterscheiden...<br />
<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>
]]></description><link>https://www.c-plusplus.net/forum/post/1282885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282885</guid><dc:creator><![CDATA[pale dog]]></dc:creator><pubDate>Fri, 11 May 2007 09:49:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerinitialisierung on Fri, 11 May 2007 09:53:10 GMT]]></title><description><![CDATA[<p>Das kannst du bei der map&lt;&gt; sowieso nicht, außer du definierst ein default-konstruiertes Objekt als &quot;nicht verfügbar&quot;. Um festzustellen, ob ein Schlüssel schon in der map vorkommt, gibt es andere Methoden (find()).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282887</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 11 May 2007 09:53:10 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerinitialisierung on Fri, 11 May 2007 09:53:55 GMT]]></title><description><![CDATA[<p>pale dog schrieb:</p>
<blockquote>
<p>und was ist, wenn man 0 als datum in die map eingetragen hat?<br />
dann kann man's ja nicht von nichtvorhandenen einträgen unterscheiden...<br />
<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>Der operator[] fügt automatisch ein wenn nicht vorhanden. Damit ist der Rückgabewert von operator[] immer ein in der Map existierendes Objekt. Ist also vollkommen richtig, Deine Beobachtung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282888</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 11 May 2007 09:53:55 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerinitialisierung on Fri, 11 May 2007 09:54:04 GMT]]></title><description><![CDATA[<p>pale dog schrieb:</p>
<blockquote>
<p>und was ist, wenn man 0 als datum in die map eingetragen hat?<br />
dann kann man's ja nicht von nichtvorhandenen einträgen unterscheiden...<br />
<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>Wenn man das will dann ist <code>op[]</code> die falsche Methode.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282889</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Fri, 11 May 2007 09:54:04 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerinitialisierung on Fri, 11 May 2007 11:05:31 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>0. Der operator[] von std::map fügt ein default-initialisiertes Objekt ein, wenn der Schlüssel noch nicht in der Map war, und gibt es zurück. Im Falle von Pointern und anderen primitiven Typen ist das also 0.</p>
</blockquote>
<p>Das ist genau die Frage, ob die default-Initialisierung einen Zeiger auf 0 setzt. Ich vermute mal eher nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282933</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Fri, 11 May 2007 11:05:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerinitialisierung on Fri, 11 May 2007 11:10:21 GMT]]></title><description><![CDATA[<p>tntnet schrieb:</p>
<blockquote>
<p>Das ist genau die Frage, ob die default-Initialisierung einen Zeiger auf 0 setzt. Ich vermute mal eher nicht.</p>
</blockquote>
<p>Doch, tut sie. Bei primitiven Typen ist default initialization gleich zero initialization, siehe Abschnitt 8.5 im Standard.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282940</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 11 May 2007 11:10:21 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerinitialisierung on Fri, 11 May 2007 11:54:11 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>tntnet schrieb:</p>
<blockquote>
<p>Das ist genau die Frage, ob die default-Initialisierung einen Zeiger auf 0 setzt. Ich vermute mal eher nicht.</p>
</blockquote>
<p>Doch, tut sie. Bei primitiven Typen ist default initialization gleich zero initialization, siehe Abschnitt 8.5 im Standard.</p>
</blockquote>
<p>Das ist doch genau das, was ich hören wollte.</p>
<p>Danke für die Information.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282955</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Fri, 11 May 2007 11:54:11 GMT</pubDate></item></channel></rss>