<?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[Frage zu Mehrdimensionale arrays]]></title><description><![CDATA[<p>Hallo...</p>
<p>Folgendes Beispiel:</p>
<pre><code class="language-cpp">int a[2][3] = {{1, 2, 3}, {4, 5, 6}};

cout &lt;&lt; a[0] &lt;&lt; endl;    // Zeiger welcher auf die erste Adresse zeigt
cout &lt;&lt; &amp;a[0] &lt;&lt; endl;   // Adresse der Zeigers
cout &lt;&lt; *a[0] &lt;&lt; endl;   // Adresse wird dereferenziert auf den der Zeiger zeigt
</code></pre>
<p>Wenn ich das so ausgebe bekomme ich folgende Werte,</p>
<p>0x28cd00<br />
0x28cd00<br />
1</p>
<p>Was ich nicht verstehe: Der Wert des Zeiger ist 0x28cd00, das ist jedoch seine eigene Adresse <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="😕"
    /> und wenn ich diese Adresse dereferenziere bekomme ich aber plötzlich den Wert 1... ich dachte aber das der Inhalt dieser Speicheradresse 0x28cd00 ist...</p>
<p>Bin verwirrt <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>Bitte um Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/295139/frage-zu-mehrdimensionale-arrays</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 13:34:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/295139.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Nov 2011 21:42:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Mehrdimensionale arrays on Mon, 07 Nov 2011 21:42:29 GMT]]></title><description><![CDATA[<p>Hallo...</p>
<p>Folgendes Beispiel:</p>
<pre><code class="language-cpp">int a[2][3] = {{1, 2, 3}, {4, 5, 6}};

cout &lt;&lt; a[0] &lt;&lt; endl;    // Zeiger welcher auf die erste Adresse zeigt
cout &lt;&lt; &amp;a[0] &lt;&lt; endl;   // Adresse der Zeigers
cout &lt;&lt; *a[0] &lt;&lt; endl;   // Adresse wird dereferenziert auf den der Zeiger zeigt
</code></pre>
<p>Wenn ich das so ausgebe bekomme ich folgende Werte,</p>
<p>0x28cd00<br />
0x28cd00<br />
1</p>
<p>Was ich nicht verstehe: Der Wert des Zeiger ist 0x28cd00, das ist jedoch seine eigene Adresse <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="😕"
    /> und wenn ich diese Adresse dereferenziere bekomme ich aber plötzlich den Wert 1... ich dachte aber das der Inhalt dieser Speicheradresse 0x28cd00 ist...</p>
<p>Bin verwirrt <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>Bitte um Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141916</guid><dc:creator><![CDATA[zeiger-&amp;gt;]]></dc:creator><pubDate>Mon, 07 Nov 2011 21:42:29 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Mehrdimensionale arrays on Mon, 07 Nov 2011 22:22:58 GMT]]></title><description><![CDATA[<p>Du hast dort keinen Pointer im eigentlichen Sinne definiert, sondern ein Array. Und jetzt überleg mal, wie dein Array im Speicher wohl aussieht und warum a[0] == &amp;a[0]. <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/2141931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141931</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 07 Nov 2011 22:22:58 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Mehrdimensionale arrays on Mon, 07 Nov 2011 22:30:42 GMT]]></title><description><![CDATA[<p>Danke für deine Antwort! <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>Kann es sein das a[0] nicht wirklich eine Adresse besitzt sondern nur eine erhält welche den Anfang des arrays definiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141936</guid><dc:creator><![CDATA[zeiger-&amp;gt;]]></dc:creator><pubDate>Mon, 07 Nov 2011 22:30:42 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Mehrdimensionale arrays on Mon, 07 Nov 2011 23:03:28 GMT]]></title><description><![CDATA[<p>Genau. Der Speicher eines Arrays hängt an einem Stück, der Zugriff auf einzelne Positionen wird mit start + sizex * x + y berechnet. Deswegen gibt das hier auch einen Compilerfehler:</p>
<pre><code class="language-cpp">void foo(int **a);

int main()
{
  char a[2][3];
  foo(a); // Autsch.
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2141946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141946</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 07 Nov 2011 23:03:28 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Mehrdimensionale arrays on Mon, 07 Nov 2011 23:23:22 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>der Zugriff auf einzelne Positionen wird mit start + sizex * x + y berechnet.</p>
</blockquote>
<p><em>start + sizex * x + y</em></p>
<pre><code class="language-cpp">int a[3][4]; // x = 3, y = 4
</code></pre>
<p>Ist das so gemeint: (start + sizex) * (x+y) == (Startadresse + 3) * (3+4)</p>
<p>Vielen Dank für deine Hilfe cooky451! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2141947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141947</guid><dc:creator><![CDATA[zeiger-&amp;gt;]]></dc:creator><pubDate>Mon, 07 Nov 2011 23:23:22 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Mehrdimensionale arrays on Mon, 07 Nov 2011 23:53:06 GMT]]></title><description><![CDATA[<p>Nja, das war so gemeint:</p>
<pre><code class="language-cpp">char a[5][5];
a[3][1] = 'c'; // Adresse wird errechnet durch a + 3 * 5 + 1
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2141951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141951</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 07 Nov 2011 23:53:06 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Mehrdimensionale arrays on Tue, 08 Nov 2011 10:23:45 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>start + sizex * x + y</p>
</blockquote>
<p>Das stimmt so aber nicht.</p>
<p>cooky451 schrieb:</p>
<blockquote>
<p>Nja, das war so gemeint:</p>
<pre><code class="language-cpp">char a[5][5];
a[3][1] = 'c'; // Adresse wird errechnet durch a + 3 * 5 + 1
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> Das * 5 ist die zweite 5 von a[5][5]?</p>
<p>Bei feld[maxy][maxx]; berechnet sich der Offset durch <code>maxx * y + x</code></p>
<p>@zeiger-&gt;<br />
Die Arrayelemente stehen so im Speicher, wie du es auch bei der Definition hingeschrieben hast:</p>
<pre><code class="language-cpp">int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
         |
Diese 3  +-----------------+ ist die selbe Zahl
                           |
a[1][2] ist dann *(a + 1 * 3 + 2)  = *(a+5)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2142057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142057</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Tue, 08 Nov 2011 10:23:45 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Mehrdimensionale arrays on Tue, 08 Nov 2011 11:40:39 GMT]]></title><description><![CDATA[<p>zeiger-&gt; schrieb:</p>
<blockquote>
<p>Folgendes Beispiel:</p>
<pre><code class="language-cpp">int a[2][3] = {{1, 2, 3}, {4, 5, 6}};

cout &lt;&lt; a[0] &lt;&lt; endl;    // Zeiger welcher auf die erste Adresse zeigt
cout &lt;&lt; &amp;a[0] &lt;&lt; endl;   // Adresse der Zeigers
cout &lt;&lt; *a[0] &lt;&lt; endl;   // Adresse wird dereferenziert auf den der Zeiger zeigt
</code></pre>
</blockquote>
<p>Alles falsch.</p>
<pre><code>Ausdruck   Was das ist                Implizit konvertierbar zu
---------------------------------------------------------------
  a[0]     Lvalue vom Typ int[3]      Adresse vom Typ int* (array to pointer decay)
 &amp;a[0]     Rvalue vom Typ int(*)[3]
 *a[0]     Lvalue vom Typ int
</code></pre>
<p>Da Postfixoperatoren stärker binden ist &amp;a[0] äquivalent zu &amp;(a[0]), *a[0] äquivalent zu *(a[0]). Hier steht auf der rechten Seite ein Lvalue-Ausdruck vom Typ int[3]. Der Dereferenzierungsoperator will aber eine Adresse haben. Daher findet hier ein array-to-pointer decay statt wobei die Adresse des ersten Elements des Arrays genommen wird. Diese ist hier vom Typ int*. Der Dereferenzierungsoperator nimmt diese Adresse und gibt uns wieder ein Lvalue vom Typ int -- also etwas, was sich auf a[0][0] bezieht.</p>
<p>Anders formuliert: Falls x ein Zeiger oder ein Array ist, ist x[0] dasselbe wie *x. Deswegen kannst Du *a[0] umschreiben zu a[0][0].</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2142068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142068</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 08 Nov 2011 11:40:39 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Mehrdimensionale arrays on Tue, 08 Nov 2011 11:47:22 GMT]]></title><description><![CDATA[<p>DirkB schrieb:</p>
<blockquote>
<p>Die Arrayelemente stehen so im Speicher, wie du es auch bei der Definition hingeschrieben hast:</p>
<pre><code class="language-cpp">int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
         |
Diese 3  +-----------------+ ist dieselbe Zahl
                           |
a[1][2] ist dann *(a + 1 * 3 + 2)  = *(a+5)
</code></pre>
</blockquote>
<p>Das ist nicht ganz richtig. a zerfällt zu int(<em>)[3] und nicht int</em>. Hier musst Du natürlich bei der Zeigerarithmetik darauf achten. Es müsste heißen</p>
<pre><code class="language-cpp">a[1][2] ist dann *(&amp;a[0][0] + 1 * 3 + 2)  = *(&amp;a[0][0]+5)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2142092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142092</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 08 Nov 2011 11:47:22 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Mehrdimensionale arrays on Tue, 08 Nov 2011 12:55:04 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Ob du <code>a</code> oder <code>&amp;a[0][0]</code> nimmst, ist egal, da beide auf das erste Element zeigen. Bei DirkB hat nur der *-Operator gefehlt:</p>
<pre><code class="language-cpp">*(*arr + 1 * 3 + 2) == *(&amp;arr[0][0] + 1 * 3 + 2)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2142131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142131</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Tue, 08 Nov 2011 12:55:04 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Mehrdimensionale arrays on Tue, 08 Nov 2011 13:58:09 GMT]]></title><description><![CDATA[<p>[Rewind] schrieb:</p>
<blockquote>
<p>krümelkacker schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Ob du <code>a</code> oder <code>&amp;a[0][0]</code> nimmst, ist egal,</p>
</blockquote>
<p>Nein, ist es nicht.<br />
a+n ist nicht äquivalent zu &amp;a[0][0]+n<br />
weder vom Typ her, noch vom rohen Adresswert bei beliebigen n.<br />
Muss ich Dir Zeigerarithmetik erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2142145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142145</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 08 Nov 2011 13:58:09 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Mehrdimensionale arrays on Tue, 08 Nov 2011 14:55:17 GMT]]></title><description><![CDATA[<p>DirkB schrieb:</p>
<blockquote>
<p>cooky451 schrieb:</p>
<blockquote>
<p>start + sizex * x + y</p>
</blockquote>
<p>Das stimmt so aber nicht.</p>
<p>cooky451 schrieb:</p>
<blockquote>
<p>Nja, das war so gemeint:</p>
<pre><code class="language-cpp">char a[5][5];
a[3][1] = 'c'; // Adresse wird errechnet durch a + 3 * 5 + 1
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> Das * 5 ist die zweite 5 von a[5][5]?</p>
<p>Bei feld[maxy][maxx]; berechnet sich der Offset durch <code>maxx * y + x</code></p>
</blockquote>
<p>Stimmt, ich wollte schreiben: start + sizey * x + y. (Für a[sizex][sizey] und a[x][y])</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2142172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142172</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Tue, 08 Nov 2011 14:55:17 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Mehrdimensionale arrays on Tue, 08 Nov 2011 22:00:10 GMT]]></title><description><![CDATA[<p>Herzlichen Dank für eure Erklärungen...<br />
Diese Zeiger sind echt ne Sache für sich (am Anfang ^^) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2142384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142384</guid><dc:creator><![CDATA[zeiger-&amp;gt;]]></dc:creator><pubDate>Tue, 08 Nov 2011 22:00:10 GMT</pubDate></item></channel></rss>