<?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[Strukturen]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich hätte eine frage zwecks strukturen.</p>
<p>Ich habe einen Zeiger auf eine Struktur erstellt und mittels -&gt; habe ich auf die variablen die innerhalb der struktur sind zugegriffen. Das Problem ist, ich lasse den zeiger auf keine struktur zeigen, ich habe den zeiger nicht initialisiert. Trotzdem funktionierte es.</p>
<p>wie kann das sein?<br />
Wenn der zeiger nicht auf die richtige variable zeigt, zeigt es im speicher ja irgendwo hin, oder? (Initialisierung ist gemeint)</p>
<p>Also müsste dies zufall sein, das es funktioniert hat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Könnte mich jemand aufklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/330951/strukturen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 17:51:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330951.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Feb 2015 21:56:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Strukturen on Tue, 03 Feb 2015 21:56:59 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich hätte eine frage zwecks strukturen.</p>
<p>Ich habe einen Zeiger auf eine Struktur erstellt und mittels -&gt; habe ich auf die variablen die innerhalb der struktur sind zugegriffen. Das Problem ist, ich lasse den zeiger auf keine struktur zeigen, ich habe den zeiger nicht initialisiert. Trotzdem funktionierte es.</p>
<p>wie kann das sein?<br />
Wenn der zeiger nicht auf die richtige variable zeigt, zeigt es im speicher ja irgendwo hin, oder? (Initialisierung ist gemeint)</p>
<p>Also müsste dies zufall sein, das es funktioniert hat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Könnte mich jemand aufklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2441053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2441053</guid><dc:creator><![CDATA[Gast123]]></dc:creator><pubDate>Tue, 03 Feb 2015 21:56:59 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen on Tue, 03 Feb 2015 22:26:19 GMT]]></title><description><![CDATA[<p>Ja sieht nach Zufall aus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2441057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2441057</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 03 Feb 2015 22:26:19 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen on Tue, 03 Feb 2015 22:27:46 GMT]]></title><description><![CDATA[<p>Gast123 schrieb:</p>
<blockquote>
<p>wie kann das sein?</p>
</blockquote>
<p>Undefiniertes verhalten eben. Es muss nicht abstürzen. Es kann auch stattdessen deine Katze schwängern, selbst wenn du nur einen Hund hast.</p>
<blockquote>
<p>Wenn der zeiger nicht auf die richtige variable zeigt, zeigt es im speicher ja irgendwo hin, oder? (Initialisierung ist gemeint)</p>
</blockquote>
<p>Korrekt, irgendwohin.</p>
<blockquote>
<p>Also müsste dies zufall sein, das es funktioniert hat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Jain. Es <em>könnte</em> Zufall sein. Die Chancen dafür sind aber so astronomisch gering, dass das eigentlich nie vorkommen sollte. Stattdessen wirst du wohl höchst wahrscheinlich noch andere Dinge in deinem Code machen, die dafür sorgen, dass es doch funktioniert. Ohne deinen Code zu kennen, kann man genaueres nicht sagen. Vorstellbar wäre beispielsweise so etwas:</p>
<pre><code>int main()
{
  int i;  // Mit Strukturen hat dein Problem nichts zu tun. Daher nehme ich der Einfachheit stattdessen einen int.

  int *p1 = &amp;i;   // Zeiger auf den int
  *p1 = 5;        // Funktioniert
  int *p2;        // Zeiger, undefinierter Wert
  *p2 = 5;        // Undefiniertes Verhalten, man würde einen Absturz erwarten
}
</code></pre>
<p>Hier würde man eigentlich in Zeile 8 einen Absturz erwarten. Viele Compiler sind aber clever und sparsam. Der Compiler kann erkennen, dass der Zeiger p1 nach Zeile 6 nirgendwo gebraucht wird und dass der Zeiger p2 nur nach Zeile 7 gebraucht wird. Er könnte daher anstatt Platz für 2 Zeiger (und den einen int) auf den Stack zu legen stattdessen nur Platz für einen Zeiger reservieren und diesen einfach recyceln. Da p2 aber nirgendwo ein neuer Wert zugewiesen wird, hätte es immer noch den alten Wert, den p1 hatte und unerwarteterweise funktioniert das Programm dann.</p>
<p>Ist natürlich trotzdem falsch, solche Programme zu schreiben, weil man sich nicht auf ein solches Verhalten verlassen kann. Viele Compiler können auch spezielle Debugversionen erzeugen, in denen solche Optimierungen nicht durchgeführt werden und wo dann uninitalisierte oder nicht mehr genutzte Werte stattdessen mit speziellen magischen Zahlen markiert werden, die im Debugger auffallen (z.B. 0xBADBADBAD oder ähnliches).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2441059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2441059</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 03 Feb 2015 22:27:46 GMT</pubDate></item></channel></rss>