<?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[Mehrdimensionale Arrays]]></title><description><![CDATA[<p>Hi,</p>
<p>wir mussten letztens (4-5 Wochen her) Dynamische Arrays erzeugen.<br />
mit dem new befehl. Dasselbe auch für Dynamische Mehrdimensionale Arrays.</p>
<p>Ich kann alles wunderbar Programmieren und hab damit ansich keine Probleme. Doch verstehe ich nicht ganz was dabei passiert/was ich mache.</p>
<p>Eine kleiner Code snippet wo ich das Array erzeuge</p>
<pre><code>char** p = new char* [zeilen];

    for (int i = 0; i &lt; zeilen; i++)
        p[i] = new char[reihen];
</code></pre>
<p>Was genau erzeug ich da? Einen Pointer der auf einen Pointer zeigt der auf ein Feld von Pointern zeigt? Und was in der For schleife Passiert versteh ich überhaupt nicht. Weiß ich da dem Array aus Pointern jeweils ein neues Array zu?</p>
<p>Ich hab irgendwo aufgeschnappt, das ich es mir einfach wie einen Pointer vorstellen soll der auf ein Array aus Pointern zeigt. Stimmt das?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/317979/mehrdimensionale-arrays</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 21:39:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317979.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Jun 2013 17:42:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrdimensionale Arrays on Wed, 26 Jun 2013 17:42:43 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wir mussten letztens (4-5 Wochen her) Dynamische Arrays erzeugen.<br />
mit dem new befehl. Dasselbe auch für Dynamische Mehrdimensionale Arrays.</p>
<p>Ich kann alles wunderbar Programmieren und hab damit ansich keine Probleme. Doch verstehe ich nicht ganz was dabei passiert/was ich mache.</p>
<p>Eine kleiner Code snippet wo ich das Array erzeuge</p>
<pre><code>char** p = new char* [zeilen];

    for (int i = 0; i &lt; zeilen; i++)
        p[i] = new char[reihen];
</code></pre>
<p>Was genau erzeug ich da? Einen Pointer der auf einen Pointer zeigt der auf ein Feld von Pointern zeigt? Und was in der For schleife Passiert versteh ich überhaupt nicht. Weiß ich da dem Array aus Pointern jeweils ein neues Array zu?</p>
<p>Ich hab irgendwo aufgeschnappt, das ich es mir einfach wie einen Pointer vorstellen soll der auf ein Array aus Pointern zeigt. Stimmt das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334599</guid><dc:creator><![CDATA[UnterKind]]></dc:creator><pubDate>Wed, 26 Jun 2013 17:42:43 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionale Arrays on Wed, 26 Jun 2013 18:01:22 GMT]]></title><description><![CDATA[<p>Deine Erklärungen stimmen. Es ist also kein richtiges 2D-Array, wie man es sich vorstellen würde:</p>
<pre><code>-------------
|0,0|0,1|0,2|
|------------
|1,0|1,1|1,2|
-------------
</code></pre>
<p>Stattdessen habt ihr eine Art Liste von Arrays, die wild verteilt sind und auch entsprechend nicht alle gleich groß sein brauchen:</p>
<pre><code>-----------------
| 0 |  1  |  2  |
-----------------
  |    |     |
  |    |---| |-------
  v        |        |
-----      v        |
|0,0|    -----      v
-----    |1,0|    -----
|0,1|    -----    |2,0|
-----             -----
|0,2|             |2,1|
-----             -----
</code></pre>
<p>Ein naheliegender Verdacht ist, dass euer Lehrer selber keine Ahnung hat. In C++ würde man das niemals so machen, selbst wenn es technisch möglich ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334609</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 26 Jun 2013 18:01:22 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionale Arrays on Wed, 26 Jun 2013 18:02:09 GMT]]></title><description><![CDATA[<p>UnterKind schrieb:</p>
<blockquote>
<p>Ich kann alles wunderbar Programmieren und hab damit ansich keine Probleme. Doch verstehe ich nicht ganz was dabei passiert/was ich mache.</p>
</blockquote>
<p>Das widerspricht sich.</p>
<pre><code>char** p;
</code></pre>
<p><code>p</code> ist ein Zeiger auf einen Zeiger auf ein char. (Noch uninitialisiert)</p>
<pre><code>p = new char* [zeilen];
</code></pre>
<p>Hier erzeugen wir ein Array von Zeigern - <code>p</code> weisen wir die Adresse des ersten Zeigers zu.<br />
Der Elementtyp des Arrays ist also nicht <code>char</code> (wie bei <code>new char[...]</code> ) sondern <code>char*</code> .</p>
<pre><code>for (int i = 0; i &lt; zeilen; i++)
        p[i] = new char[reihen];
</code></pre>
<p>Hier weisen wir jedem Zeiger in dem Array (auf das <code>p</code> zeigt) die Adresse eines <code>char</code> -Arrays mit <code>reihen</code> Elementen zu.</p>
<p>Damit kannst du durch mehrfache Indirektion auf ein multidimensionales Array zugreifen.<br />
Wie du sicher weist, entspricht die Operation</p>
<pre><code>A[B]
</code></pre>
<p>Einer Dereferenzierung mit (relativem) Offset:</p>
<pre><code>*( A + B )
</code></pre>
<p>Damit gleicht</p>
<pre><code>A[B][C]
*(*( A + B) + C)
</code></pre>
<p>Was du also tust: Um auf das Element [5][3] zuzugreifen, holst du dir erst den Zeiger auf das fünfte Array:<br />
<code>*(p + 5)</code><br />
Und dann greifst du auf dessen drittes Element zu.<br />
<code>*(*(p + 5) + 3)</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334610</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 26 Jun 2013 18:02:09 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionale Arrays on Wed, 26 Jun 2013 21:01:11 GMT]]></title><description><![CDATA[<p>Finde nicht das sich das wiederspricht.</p>
<p>Code auswendig zu lernen und runterzutippen ist was anderes als zu verstehen was dabei genau passiert.</p>
<p>Dein naheliegender Verdacht ist leider total daneben, unser Info Prof. hat den Lehrauftrag uns C++ beizubringen und dazu gehört auch Dynamische Speicherbelegung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334665</guid><dc:creator><![CDATA[UnterKind]]></dc:creator><pubDate>Wed, 26 Jun 2013 21:01:11 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionale Arrays on Wed, 26 Jun 2013 21:11:08 GMT]]></title><description><![CDATA[<p>UnterKind schrieb:</p>
<blockquote>
<p>Finde nicht das sich das wiederspricht.</p>
<p>Code auswendig zu lernen und runterzutippen ist was anderes als zu verstehen was dabei genau passiert.</p>
</blockquote>
<p>Also kannst du es offensichtlich doch nicht &quot;wunderbar Programmieren&quot; und hast &quot;damit ansich&quot; doch Probleme?</p>
<blockquote>
<p>Dein naheliegender Verdacht ist leider total daneben, unser Info Prof. hat den Lehrauftrag uns C++ beizubringen und dazu gehört auch Dynamische Speicherbelegung.</p>
</blockquote>
<p>Erstens: Könntest du dich bitte direkter an Mitglieder ansprechen? Ich bin jetzt verwirrt, weil ich mich im letzten Absatz zuerst irgendwie angesprochen gefühlt habe.</p>
<p>Btw: Mach bitte keine solchen Bemerkungen. Das da oben ist zwar korrektes, also kompilierbares C++ - das ist aber auf keinen Fall, was irgendjemand jemals benutzen sollte (es gibt keinen Grund dafür).<br />
Dynamische Speicherbelegung sollte es in C++ nur in Verbindung mit RAII geben. Dazu gibt es in der Standardbibliothek Container, Smart-Pointer und mehr. Meistens wirst du in C++ nicht mal ein <code>new</code> sehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334667</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 26 Jun 2013 21:11:08 GMT</pubDate></item></channel></rss>