<?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[Multidimensionale Arrays]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe einen fest codierten array der ungefähr so aussieht:</p>
<pre><code>float a[2][2] = {{1,2}, {3,4}};
</code></pre>
<p>Nun würde ich gerne den Array einer anderen Variable übergeben.<br />
Z.B. so:</p>
<pre><code>float b[2][2] = a;
</code></pre>
<p>Ich habe schon einige sachen ausprobiert aber bekomme es nicht hin.<br />
Kann mir jemand sagen wie man das korrekt macht?</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286343/multidimensionale-arrays</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 23:10:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286343.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 08 May 2011 08:25:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Multidimensionale Arrays on Sun, 08 May 2011 08:25:15 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe einen fest codierten array der ungefähr so aussieht:</p>
<pre><code>float a[2][2] = {{1,2}, {3,4}};
</code></pre>
<p>Nun würde ich gerne den Array einer anderen Variable übergeben.<br />
Z.B. so:</p>
<pre><code>float b[2][2] = a;
</code></pre>
<p>Ich habe schon einige sachen ausprobiert aber bekomme es nicht hin.<br />
Kann mir jemand sagen wie man das korrekt macht?</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2060298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2060298</guid><dc:creator><![CDATA[nico_534]]></dc:creator><pubDate>Sun, 08 May 2011 08:25:15 GMT</pubDate></item><item><title><![CDATA[Reply to Multidimensionale Arrays on Sun, 08 May 2011 08:33:08 GMT]]></title><description><![CDATA[<p>Schau mal hier <a href="http://de.wikibooks.org/wiki/C-Programmierung:_Zeiger" rel="nofollow">http://de.wikibooks.org/wiki/C-Programmierung:_Zeiger</a><br />
im Abschnitt &quot;Unterschied zwischen Call by Value und Call by Reference&quot; bei dem Beispiel mit dem swap.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2060307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2060307</guid><dc:creator><![CDATA[Topic]]></dc:creator><pubDate>Sun, 08 May 2011 08:33:08 GMT</pubDate></item><item><title><![CDATA[Reply to Multidimensionale Arrays on Sun, 08 May 2011 09:32:32 GMT]]></title><description><![CDATA[<p>Der Unterschied ist mir klar, glaube ich <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>
<p>Naja jedenfalls komme ich nicht wirklich auf die Lösung.<br />
Möchte ich z.B. einen Zeiger auf einen einzelnen Float machen, sieht das ja so aus:</p>
<pre><code>float a = 5.0f;
float* b = &amp;a;
</code></pre>
<p>Wenn ich nun versuche das auf mein Beispiel mit 2D Arrays zu abstrahieren, komme ich auf so etwas:</p>
<pre><code>float a[2][2] = {{1,2}, {3,4}};
float*** b = (float***)&amp;a;
</code></pre>
<p>Kompilieren tut er, aber es gibt dann einen Speicherlesefehler wenn ich z.B. so darauf zugreifen will:</p>
<pre><code>printf(&quot;%f\n&quot;, (*b)[0][0]);
</code></pre>
<p>Also ich habe da wahrscheinlich einen ziemlichen Denkfehler drin, aber ich sehe ihn einfach nicht.<br />
Kann mich jemand mal aufklären? <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/2060335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2060335</guid><dc:creator><![CDATA[nico_534]]></dc:creator><pubDate>Sun, 08 May 2011 09:32:32 GMT</pubDate></item><item><title><![CDATA[Reply to Multidimensionale Arrays on Sun, 08 May 2011 09:39:24 GMT]]></title><description><![CDATA[<p>Der Denkfehler: der Typ des Arrays ist <code>float(*)[2]</code> (Array auf Array mit 2 Dimensionen) und nicht <code>float**</code> (Array auf Zeiger). Wenn du eine Variable letzteren Types hast und diese mit <code>b[0][0]</code> dereferenzierst, macht der Compiler daraus <code>*(*(b+0)+0)</code> , also <code>**b</code> . Der erste Eintrag des Arrays wird also als Zeiger interpretiert. Richtig wäre aber <code>*(b+0*2+0)</code> , wie es auch beim Typ <code>float(*)[2]</code> gemacht wird (deshalb braucht der Compiler auch im Typen alle Dimensionen außer der ersten, sonst kann er die Dereferenzierung nicht durchführen.</p>
<p>Übrigens kannst du auch eine Referenz anlegen:</p>
<pre><code class="language-cpp">float (&amp;b)[2][2]
</code></pre>
<p>Wenn du Kopiersemantik brauchst siehe dir boost::array (oder std::tr1::array oder std::array) an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2060339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2060339</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Sun, 08 May 2011 09:39:24 GMT</pubDate></item><item><title><![CDATA[Reply to Multidimensionale Arrays on Sun, 08 May 2011 10:35:34 GMT]]></title><description><![CDATA[<p>Ok, is ganzschön verwirrend mit den Zeigern.</p>
<p>Also wenn ich den typen wieder zurückcaste zu &quot;float (<em>)[2][2]&quot; statt &quot;float</em>**&quot; dann macht es der compiler richtig:</p>
<pre><code>float a[2][2] = {{1,2}, {3,4}};
float*** b = (float***)&amp;a;
printf(&quot;%f\n&quot;, ***((float (*)[2][2])b));
</code></pre>
<pre><code>float (&amp;b)[2][2]
</code></pre>
<p>Das ist natürlich die wesentlich elegantere und verständlichere Lösung <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>
<p>Danke für die Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2060362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2060362</guid><dc:creator><![CDATA[nico_534]]></dc:creator><pubDate>Sun, 08 May 2011 10:35:34 GMT</pubDate></item><item><title><![CDATA[Reply to Multidimensionale Arrays on Sun, 08 May 2011 15:51:52 GMT]]></title><description><![CDATA[<p>Wenn dir die Schreibweise zu kompliziert ist, kannst du dir ja auch ein typedef machen <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="😉"
    /><br />
Aber auf Dauer würde ich so komplizierte Konstrukte sowieso nicht verwenden( klar zum üben mal, man muss es ja schon mal gemacht haben und kennen ), sondern probiere es anderster zu lösen, mit Vektoren zum Beispiel. Außer es geht natürlich nicht anders aus irgendeinem Grund.</p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2060493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2060493</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Sun, 08 May 2011 15:51:52 GMT</pubDate></item></channel></rss>