<?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[Zweidimensionales Array]]></title><description><![CDATA[<p>Bis jetzt habe ich mir noch nie wirklich Gedanken darüber gemacht, aber wie kann ich ein mehrdimensionales Array erstellen, dessen Größe bei Programmstart unbekannt ist?</p>
<p>Eindimensional geht ja einfach:<br />
char *blub = new char[size];</p>
<p>Wie kann ich das machen, wenn es zweidimensional sein soll?<br />
Nach dem Stil array[x][y]</p>
<p>Dann habe ich noch sowas gesehen: array[x,y]<br />
Was bedeuten die beiden Angaben mit einem Komma getrennt?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/139704/zweidimensionales-array</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 19:17:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/139704.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Mar 2006 16:15:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zweidimensionales Array on Wed, 08 Mar 2006 16:15:54 GMT]]></title><description><![CDATA[<p>Bis jetzt habe ich mir noch nie wirklich Gedanken darüber gemacht, aber wie kann ich ein mehrdimensionales Array erstellen, dessen Größe bei Programmstart unbekannt ist?</p>
<p>Eindimensional geht ja einfach:<br />
char *blub = new char[size];</p>
<p>Wie kann ich das machen, wenn es zweidimensional sein soll?<br />
Nach dem Stil array[x][y]</p>
<p>Dann habe ich noch sowas gesehen: array[x,y]<br />
Was bedeuten die beiden Angaben mit einem Komma getrennt?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1011764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1011764</guid><dc:creator><![CDATA[xindon]]></dc:creator><pubDate>Wed, 08 Mar 2006 16:15:54 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidimensionales Array on Wed, 08 Mar 2006 17:55:30 GMT]]></title><description><![CDATA[<p>FAQ: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39489.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39489.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1011866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1011866</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Wed, 08 Mar 2006 17:55:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidimensionales Array on Wed, 08 Mar 2006 17:55:42 GMT]]></title><description><![CDATA[<p>char *blub = new char [10,11]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1011868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1011868</guid><dc:creator><![CDATA[xfvxfgvfdxgf]]></dc:creator><pubDate>Wed, 08 Mar 2006 17:55:42 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidimensionales Array on Wed, 08 Mar 2006 18:03:15 GMT]]></title><description><![CDATA[<p>xfvxfgvfdxgf schrieb:</p>
<blockquote>
<p>char *blub = new char [10,11]</p>
</blockquote>
<p>Hübsch. Nur erstellt das kein mehrdimensionales Array sondern ein eindimensionales Array mit Platz für 11 chars.</p>
<p>Du solltest dir mal die Bedeutung des Komma-Operators anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1011884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1011884</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Wed, 08 Mar 2006 18:03:15 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidimensionales Array on Wed, 08 Mar 2006 22:37:07 GMT]]></title><description><![CDATA[<p>Wieso hat eigentlich (Standard) C++ nicht was zur Verfügung gestellt um dynamisch mehrdimensonale Array's zur erstellen ???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1012100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1012100</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 08 Mar 2006 22:37:07 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidimensionales Array on Thu, 09 Mar 2006 01:00:51 GMT]]></title><description><![CDATA[<p>fanden sie halt lustig <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="😉"
    /> dafür gibs ja die stl</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1012129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1012129</guid><dc:creator><![CDATA[sdfsf9999jj]]></dc:creator><pubDate>Thu, 09 Mar 2006 01:00:51 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidimensionales Array on Thu, 09 Mar 2006 07:13:22 GMT]]></title><description><![CDATA[<p>Freak_Coder schrieb:</p>
<blockquote>
<p>Wieso hat eigentlich (Standard) C++ nicht was zur Verfügung gestellt um dynamisch mehrdimensonale Array's zur erstellen ???</p>
</blockquote>
<p>Haben sie doch - nennt sich vector&lt;vector&lt;T&gt; &gt; (oder auch Doppelpointer).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1012171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1012171</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 09 Mar 2006 07:13:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidimensionales Array on Thu, 09 Mar 2006 13:05:24 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Haben sie doch - nennt sich vector&lt;vector&lt;T&gt; &gt; (oder auch Doppelpointer).</p>
</blockquote>
<p>Und wenn man nicht die stl benutzen will und lieber sowas hätte: T* la = new T[4][7];</p>
<p><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/1012431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1012431</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 09 Mar 2006 13:05:24 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidimensionales Array on Thu, 09 Mar 2006 13:31:01 GMT]]></title><description><![CDATA[<p>Dann bleiben noch Doppelpointer:</p>
<pre><code class="language-cpp">T** matrix = new T*[zeilen]
for(int i=0;i&lt;zeilen;++i) matrix[i]=new T[spalten];
</code></pre>
<p>oder auch das hier:</p>
<pre><code class="language-cpp">T** matrix = new T*[zeilen]
matrix[0]=new T[zeilen*spalten];
for(int i=1;i&lt;zeilen;++i) matrix[i]=matrix[0]+spalten*i;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1012463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1012463</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 09 Mar 2006 13:31:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidimensionales Array on Thu, 09 Mar 2006 14:05:54 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Dann bleiben noch Doppelpointer:</p>
<pre><code class="language-cpp">T** matrix = new T*[zeilen]
for(int i=0;i&lt;zeilen;++i) matrix[i]=new T[spalten];
</code></pre>
<p>oder auch das hier:</p>
<pre><code class="language-cpp">T** matrix = new T*[zeilen]
matrix[0]=new T[zeilen*spalten];
for(int i=1;i&lt;zeilen;++i) matrix[i]=matrix[0]+spalten*i;
</code></pre>
</blockquote>
<p>Ja das weiß ich doch. Ich frage mich nur wieso man nicht so ein einfaches Konstrukt wie new[][] hat <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1012507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1012507</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 09 Mar 2006 14:05:54 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidimensionales Array on Thu, 09 Mar 2006 19:37:32 GMT]]></title><description><![CDATA[<p>Freak_Coder schrieb:</p>
<blockquote>
<p>ch frage mich nur wieso man nicht so ein einfaches Konstrukt wie new[][] hat <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>
</blockquote>
<p>Genau das hab ich mich ja auch gefragt.</p>
<p>In Java ist es wunderbar:<br />
char array[][] = new char[6][5];</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1012788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1012788</guid><dc:creator><![CDATA[xindon]]></dc:creator><pubDate>Thu, 09 Mar 2006 19:37:32 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidimensionales Array on Thu, 09 Mar 2006 22:46:35 GMT]]></title><description><![CDATA[<p>Freak_Coder schrieb:</p>
<blockquote>
<p>Ich frage mich nur wieso man nicht so ein einfaches Konstrukt wie new[][] hat <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>
</blockquote>
<p>Das lässt sich sehr einfach beantworten. Es liegt in der Philosophie von C und seinen Arrays. Ein Array ist einfach ein zusammenhängender Speicherbereich, ohne irgendwelche Attribute (wie Größe) oder Funktionen. Array-Indizierung ist eine reine Compile-Zeit-Angelegenheit. int[4] ist einfach Startadresse + 4 * sizeof(int).</p>
<p>Ein Ausdruck wie new[][] ist auch erlaubt, aber nur, wenn die zweite Dimension zur Compile-Zeit feststeht. Auch hier liegt das Array an einem Stück im Speicher und Indizierung ist auch einfach möglich.</p>
<p>int (*pArr)[5] = new int[2][5];</p>
<p>pArr[1][2] ist einfach Startadresse + 1 * sizeof(int[5]) + 2 * sizeof(int).</p>
<p>Würde man nun mehrdimensionale Array unterstützen wollen, die in allen Dimensionen dynamisch sind, müsste Array-Indizierung aufeinmal eine Laufzeitoperation werden, da der Compiler ohne Kentnisse der Dimensionen natürlich keine Offsets berechnen kann.<br />
Das wäre weniger effizient und damit nicht in guter C-Tradition.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1012922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1012922</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Thu, 09 Mar 2006 22:46:35 GMT</pubDate></item></channel></rss>