<?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, ein Element weiter rausgehen]]></title><description><![CDATA[<p>Ist sowas als Abbruchbedingung überhaupt erlaubt, oder schlechter Stil? Wer macht dass auch so?</p>
<pre><code class="language-cpp">int main()
{
    int array[5] = {23,63,1,42,2};
    int *source = array;

    while(source != &amp;array[5])
    {
        cout &lt;&lt; *source &lt;&lt; endl;
    }

    return 0;
}
</code></pre>
<p>Ich stell mir dass so wie den end-iterator vor...!?<br />
Funktionieren tuts zumindestens.</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/236988/zeiger-ein-element-weiter-rausgehen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 15:28:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/236988.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 22 Mar 2009 22:14:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger, ein Element weiter rausgehen on Sun, 22 Mar 2009 22:14:01 GMT]]></title><description><![CDATA[<p>Ist sowas als Abbruchbedingung überhaupt erlaubt, oder schlechter Stil? Wer macht dass auch so?</p>
<pre><code class="language-cpp">int main()
{
    int array[5] = {23,63,1,42,2};
    int *source = array;

    while(source != &amp;array[5])
    {
        cout &lt;&lt; *source &lt;&lt; endl;
    }

    return 0;
}
</code></pre>
<p>Ich stell mir dass so wie den end-iterator vor...!?<br />
Funktionieren tuts zumindestens.</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1684525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1684525</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 22 Mar 2009 22:14:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger, ein Element weiter rausgehen on Sun, 22 Mar 2009 22:22:22 GMT]]></title><description><![CDATA[<p>Wenn ich überhaupt jemals so einen Fall habe (was sehr selten ist!), dann mache ich das so:</p>
<pre><code class="language-cpp">int main()
{
  int array[5] = { 23, 63, 1, 42, 2};

  int* iter = &amp;array[0];
  int* end = iter + 5;

  for(; iter != end; ++iter)
  {
    std::cout &lt;&lt; *iter &lt;&lt; std::endl;
  }

  return 0;
}
</code></pre>
<p>Der Grund dafür ist, dass du durch den Zugriff über den Index-Operator automatisch das Element auch dereferenzierst. Du greifst somit auf Speicher zu, zwar nur lesend, der dir nicht gehört. Ein Zeiger dagegen kannst du überall hinzeigen lassen, das ist kein Problem.<br />
Ich bin mir jetzt nicht ganz sicher (und zu faul nachzuschauen), aber ich meine das Verhalten in deinem Fall ist undefiniert. Der Kompiler optimiert es wahrscheinlich weg, weswegen es funktioniert. Aber Zugriff auf Speicher, der einem nicht gehört, ist im allgemein undefiniertes Verhalten. Egal ob man liest oder schreibt.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1684531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1684531</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 22 Mar 2009 22:22:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger, ein Element weiter rausgehen on Sun, 22 Mar 2009 23:08:41 GMT]]></title><description><![CDATA[<p>Undefiniert.</p>
<p>Auf keinen Fall machen, mit etwas Pech könnte aus so einem Programm Skynet werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1684550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1684550</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Sun, 22 Mar 2009 23:08:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger, ein Element weiter rausgehen on Mon, 23 Mar 2009 00:58:10 GMT]]></title><description><![CDATA[<p>The-Kenny schrieb:</p>
<blockquote>
<p>Undefiniert.</p>
</blockquote>
<p>Falsch.</p>
<p>Zumindest die Variante von Dravere ist nicht undefiniert, da es im Standard extra eine Ausnahme für das &quot;one past last&quot; Element von Arrays gibt.</p>
<p>Grund für diese Ausnahme ist vermutlich damit sich Iteratoren von z.B. std::vector einfacher und performanter implementieren lassen (nämlich als einfacher Zeiger).</p>
<p>Ich glaube aber auch nicht dass die Schreibweise &amp;array[size] &quot;OK&quot; ist. Lieber &amp;array[0] + size.</p>
<p>Es wird zwar nichts wirklich gelesen, aber zumindest von der Syntax her wird bei &amp;array[size] ein Element dereferenzeiert welches garnichtmehr existiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1684570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1684570</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 23 Mar 2009 00:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger, ein Element weiter rausgehen on Mon, 23 Mar 2009 15:48:28 GMT]]></title><description><![CDATA[<p>Stromberg, wie kommt es, dass du immer sehr ähnliche Fragen stellst?</p>
<p>Die Thematik mit One Past Last wurde <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1663870.html" rel="nofollow">hier</a> schon erläutert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1684906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1684906</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 23 Mar 2009 15:48:28 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger, ein Element weiter rausgehen on Mon, 23 Mar 2009 18:16:44 GMT]]></title><description><![CDATA[<p>1. Stell ich nicht &quot;immer&quot; sehr ähnliche Fragen, dass eins der ersten Male.<br />
2. Ich leide an schwerem Alzheimer, und vergesse aufgrund dessen öfter ältere Beiträge. Doch ist Alzheimer ein Grund um mich zu verachten? Darf ich trotzdem nicht wie jeder andere Mensch diese Forum benutzen? Wieviel Zeit bleibt mir noch bis das Alzheimer mein komplettes Gehirn zerfressen hat? Ich möchte diese Zeit noch nutzen. Bitte habt Verständnis für meine &quot;kleine&quot; Behinderung und toleriert diese.</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685004</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Mon, 23 Mar 2009 18:16:44 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger, ein Element weiter rausgehen on Mon, 23 Mar 2009 18:22:14 GMT]]></title><description><![CDATA[<p>Tut mir leid, ich wollte dich wirklich nicht kränken.</p>
<p>Es gibt nur gewisse Leute, die oft die selben Fragen stellen, weil sie sich nicht mit den Antworten der Leute befassen. Deshalb bin ich teilweise grundsätzlich etwas skeptisch, nimm das nicht persönlich. Aber ich bin froh, dass das bei dir nicht der Fall ist. Sorry nochmals.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685010</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 23 Mar 2009 18:22:14 GMT</pubDate></item></channel></rss>