<?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[Verhalten bei indexierung von Array]]></title><description><![CDATA[<p>Ich habe mir einen Array angelegt der 6 Häfen speichern soll. Da am Anfang ein Hafen als Anfangshafen gesetzt werden soll benutze ich srand und rand um durch Zufall einen Index zu bekommen.</p>
<p>Komischerweise will der Compiler bei der deklarierung, dass ich einen festen Index von 6 setze. Obwohl eigentlich 5 ausreichen müssten, da der Index bei 0 anfängt. Komischerweise fängt der Index bei mir, bei der Deklaration, aber bei 1 an. Hier mal kurz mein Code.</p>
<pre><code>m_HarbourList = new std::string[6] { &quot;Hamburg&quot;, &quot;Los Angeles&quot;, &quot;New York&quot;, &quot;Antwerpen&quot;, &quot;Dubai&quot;, &quot;Singapur&quot; };
m_Harbour = Util::chance(0, 6);

std::string Player::getHarbour() const
{
        return m_HarbourList[m_Harbour];
}
</code></pre>
<p>So liefert er mir auf jedenfall jeden Hafen zurück, dass funktioniert ja auch. Nur ich würde gerne verstehen wieso der Compiler meckert wenn ich new std::string[5] schreibe. Es sieht für mich so aus als das er mit dem Index 1 anfängt. Sowas ist mir eigentlich noch nicht untergekommen und widerspricht allem was ich bisher über Arrays gelesen habe.</p>
<p>Kann mir das jemand erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/337405/verhalten-bei-indexierung-von-array</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 04:35:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/337405.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 31 Mar 2016 00:34:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verhalten bei indexierung von Array on Thu, 31 Mar 2016 00:35:24 GMT]]></title><description><![CDATA[<p>Ich habe mir einen Array angelegt der 6 Häfen speichern soll. Da am Anfang ein Hafen als Anfangshafen gesetzt werden soll benutze ich srand und rand um durch Zufall einen Index zu bekommen.</p>
<p>Komischerweise will der Compiler bei der deklarierung, dass ich einen festen Index von 6 setze. Obwohl eigentlich 5 ausreichen müssten, da der Index bei 0 anfängt. Komischerweise fängt der Index bei mir, bei der Deklaration, aber bei 1 an. Hier mal kurz mein Code.</p>
<pre><code>m_HarbourList = new std::string[6] { &quot;Hamburg&quot;, &quot;Los Angeles&quot;, &quot;New York&quot;, &quot;Antwerpen&quot;, &quot;Dubai&quot;, &quot;Singapur&quot; };
m_Harbour = Util::chance(0, 6);

std::string Player::getHarbour() const
{
        return m_HarbourList[m_Harbour];
}
</code></pre>
<p>So liefert er mir auf jedenfall jeden Hafen zurück, dass funktioniert ja auch. Nur ich würde gerne verstehen wieso der Compiler meckert wenn ich new std::string[5] schreibe. Es sieht für mich so aus als das er mit dem Index 1 anfängt. Sowas ist mir eigentlich noch nicht untergekommen und widerspricht allem was ich bisher über Arrays gelesen habe.</p>
<p>Kann mir das jemand erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2491897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2491897</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 31 Mar 2016 00:35:24 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten bei indexierung von Array on Thu, 31 Mar 2016 02:15:11 GMT]]></title><description><![CDATA[<p>Indizes und Anzahlen sind zwei verschiedene Konzepte. Ein Feld mit einer Anzahl von 6 Einträgen (bei der Definition angegeben) hat Indizes von 0 bis 5 (jeweils einschließlich).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2491900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2491900</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 31 Mar 2016 02:15:11 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten bei indexierung von Array on Thu, 31 Mar 2016 06:35:37 GMT]]></title><description><![CDATA[<p>Ich würde jetzt mal vermuten, dass Util::chance(0, 6) auch eine 6 liefern kann. Das wäre falsch, da du nur 6 Häfen hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2491907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2491907</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 31 Mar 2016 06:35:37 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten bei indexierung von Array on Thu, 31 Mar 2016 09:55:27 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Ich würde jetzt mal vermuten, dass Util::chance(0, 6) auch eine 6 liefern kann. Das wäre falsch, da du nur 6 Häfen hast.</p>
</blockquote>
<p>im Gegenteil, das Programm verhält sich komischerweise richtig, ohne Fehler. Es werden mir alle 6 Häfen zurückgegeben. Chance liefert mir eine Zahl zwischen 1-6. Kann also auch 1 oder 6 sein, aber nie 0.</p>
<p>Deswegen habe ich ja gefragt warum das so ist. Verstehen tuh ich es immer noch nicht ganz, aber bin jetzt auf vector umgestiegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2491928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2491928</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 31 Mar 2016 09:55:27 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten bei indexierung von Array on Thu, 31 Mar 2016 10:20:09 GMT]]></title><description><![CDATA[<p>Bennisen schrieb:</p>
<blockquote>
<p>manni66 schrieb:</p>
<blockquote>
<p>Ich würde jetzt mal vermuten, dass Util::chance(0, 6) auch eine 6 liefern kann. Das wäre falsch, da du nur 6 Häfen hast.</p>
</blockquote>
<p>im Gegenteil, das Programm verhält sich komischerweise richtig, ohne Fehler.</p>
</blockquote>
<p>Das kann bei undefiniertem Verhalten so sein. Irgemdwann fliegt es dir halt um die Ohren.</p>
<p>Bennisen schrieb:</p>
<blockquote>
<p>Es werden mir alle 6 Häfen zurückgegeben.</p>
</blockquote>
<p>Dann werden die Indizes 0 bis 5 verwendet.</p>
<p>Bennisen schrieb:</p>
<blockquote>
<p>Chance liefert mir eine Zahl zwischen 1-6. Kann also auch 1 oder 6 sein, aber nie 0.</p>
</blockquote>
<p>Wenn das wirklich so sein sollte, ist die Funktion ziemlich beschissen definiert. Unabhängig davon: <strong>der Index 6 ist ungültig</strong>.</p>
<p>Bennisen schrieb:</p>
<blockquote>
<p>aber bin jetzt auf vector umgestiegen.</p>
</blockquote>
<p>Ein Vector verhält sich in der Hinsicht genau so, d.h. <strong>der Index 6 ist ungültig</strong>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2491931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2491931</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 31 Mar 2016 10:20:09 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten bei indexierung von Array on Thu, 31 Mar 2016 14:31:13 GMT]]></title><description><![CDATA[<pre><code>m_HarbourList = new std::string[6] { &quot;Hamburg&quot;, &quot;Los Angeles&quot;, &quot;New York&quot;, &quot;Antwerpen&quot;, &quot;Dubai&quot;, &quot;Singapur&quot; };
</code></pre>
<p>new std::string[6] &lt;= gibt es da heute in C++ nicht andere Lösungen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Irgend wie denke ich, dein Quelltext ist sehr eigenwillig oder kreativ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2491944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2491944</guid><dc:creator><![CDATA[f.-th.]]></dc:creator><pubDate>Thu, 31 Mar 2016 14:31:13 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten bei indexierung von Array on Thu, 31 Mar 2016 14:42:11 GMT]]></title><description><![CDATA[<p>Bei der Definition des Arrays ist die in eckigen Klammern angegebene <strong>Anzahl</strong> [6] die Anzahl der gewünschten Elemente, die Zählung erfolgt dabei wie gewohnt.</p>
<p>Die <strong>Indizierung</strong> (also das Zugreifen) beginnt bei 0. Somit kannst du auf 6 Elemente zugreifen, die erlaubten Indizes sind aus der Menge {0, 1, 2, 3, 4, 5}.</p>
<p>Dass das bei-0-zählen-anfangen nicht immer intuitiv ist zeigt sich auch in den vielen Programmfehlern/Sicherheitslücken, welche durch off-by-1 Fehlern entstanden sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2491948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2491948</guid><dc:creator><![CDATA[rwerwer]]></dc:creator><pubDate>Thu, 31 Mar 2016 14:42:11 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten bei indexierung von Array on Thu, 31 Mar 2016 16:49:39 GMT]]></title><description><![CDATA[<p>Bennisen schrieb:</p>
<blockquote>
<p>im Gegenteil, das Programm verhält sich komischerweise richtig, ohne Fehler. Es werden mir alle 6 Häfen zurückgegeben. Chance liefert mir eine Zahl zwischen 1-6. Kann also auch 1 oder 6 sein, aber nie 0.</p>
</blockquote>
<p>Glaub ich nicht.<br />
Lass dir die Zahlen die du von Util::chance(0, 6) bekommst mal ausgeben.<br />
Die werden 0...5 sein.<br />
Was auch vernünftig wäre.<br />
Bzw. eine der beiden vernünftigen Varianten.<br />
Die 2. vernünftige Variante wäre dass Zahlen 0...6 zurückkommen.</p>
<p>Und 1...6 wäre so beknackt dass ich dir - wie ich ja schon geschrieben habe - einfach nicht glaube dass es so ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2491957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2491957</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 31 Mar 2016 16:49:39 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten bei indexierung von Array on Thu, 31 Mar 2016 19:23:34 GMT]]></title><description><![CDATA[<p>naja dann muss irgendwas meinen verstand getrübt haben. dann hatte ich wohl doch recht, dass das nicht sein kann. aber mittlerweile habe ich sowieso ein paar dinge geändert (optimiert).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2491970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2491970</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 31 Mar 2016 19:23:34 GMT</pubDate></item></channel></rss>