<?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 übergeben...]]></title><description><![CDATA[<p>Hallo Leute,<br />
Ersteinmal zu mir : Ich programmiere ca. seit einem Jahr in Java und nun habe ich mit c++ begonnen. Ich nutze momentan Microsoft Visual Studio 2010 als Entwicklungsumgebung.</p>
<p>Momentan programmiere ich erstmal ( zum warm werden <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="🙂"
    /> ) kleinere Programme.<br />
In meinem aktuellen Programm möchte ich mich ein bisschen mit Arrays beschäftigen. Dabei bin ich nun auf folgendes Problem gestoßen : Ich habe eine Funktion der ich ein zweidimensionales Array übergeben möchte. Jedoch klappt dies nicht wirklich.</p>
<p>Hier mal ein Bsp. Code wie ich es bis jetzt probiert habe :</p>
<pre><code class="language-cpp">using namespace std;

// Prototypen
void fk1( int arr[][]);

int main()
{
    int const groesse = 5;
    int arr[groesse][groesse];
    fk1(arr);

    system(&quot;Pause&quot;);
    return 0;

}

void fk1( int brett[][])
{

    // Anweisungen
}
</code></pre>
<p>Kann mir jemand erklären wie es richtig funktioniert? Ebenfalls verlangt der Compiler beim Anlegen des Arrays ein Konstanten wert. Wie würde es denn aussehen wenn ich z.B. über ein cin die Größe des Arrays bestimmen möchte?</p>
<p>Danke jetzt schonmal <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>mfG</p>
<p>CharlieHarper</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/276092/zweidimensionales-array-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 11:47:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/276092.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Oct 2010 20:11:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to zweidimensionales Array übergeben... on Tue, 26 Oct 2010 20:12:09 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
Ersteinmal zu mir : Ich programmiere ca. seit einem Jahr in Java und nun habe ich mit c++ begonnen. Ich nutze momentan Microsoft Visual Studio 2010 als Entwicklungsumgebung.</p>
<p>Momentan programmiere ich erstmal ( zum warm werden <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="🙂"
    /> ) kleinere Programme.<br />
In meinem aktuellen Programm möchte ich mich ein bisschen mit Arrays beschäftigen. Dabei bin ich nun auf folgendes Problem gestoßen : Ich habe eine Funktion der ich ein zweidimensionales Array übergeben möchte. Jedoch klappt dies nicht wirklich.</p>
<p>Hier mal ein Bsp. Code wie ich es bis jetzt probiert habe :</p>
<pre><code class="language-cpp">using namespace std;

// Prototypen
void fk1( int arr[][]);

int main()
{
    int const groesse = 5;
    int arr[groesse][groesse];
    fk1(arr);

    system(&quot;Pause&quot;);
    return 0;

}

void fk1( int brett[][])
{

    // Anweisungen
}
</code></pre>
<p>Kann mir jemand erklären wie es richtig funktioniert? Ebenfalls verlangt der Compiler beim Anlegen des Arrays ein Konstanten wert. Wie würde es denn aussehen wenn ich z.B. über ein cin die Größe des Arrays bestimmen möchte?</p>
<p>Danke jetzt schonmal <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>mfG</p>
<p>CharlieHarper</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1971148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1971148</guid><dc:creator><![CDATA[CharlieHarper]]></dc:creator><pubDate>Tue, 26 Oct 2010 20:12:09 GMT</pubDate></item><item><title><![CDATA[Reply to zweidimensionales Array übergeben... on Tue, 26 Oct 2010 20:27:49 GMT]]></title><description><![CDATA[<p>Konstant:</p>
<pre><code class="language-cpp">void f(int x[10][5])
{
}

int main()
{
	int a[10][5];

	f(a);
}
</code></pre>
<p>Variabel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

void f(int **a, int x, int y)
{
}

int main()
{
	int x = 10;
	int y = 5;

// Speicheranforderung
	int **a = new int*[x];

	for (int i = 0; i &lt; x; ++i)
	{
		a[i] = new int[y];
	}

// Übergabe
	f(a, x, y);

// Speicherfreigabe
	for (int i = 0; i &lt; x; ++i)
	{
		delete[] a[i];
	}

	delete[] a;
}
</code></pre>
<p>Siehe auch <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/1971157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1971157</guid><dc:creator><![CDATA[,,,,]]></dc:creator><pubDate>Tue, 26 Oct 2010 20:27:49 GMT</pubDate></item><item><title><![CDATA[Reply to zweidimensionales Array übergeben... on Tue, 26 Oct 2010 20:34:07 GMT]]></title><description><![CDATA[<p>Ohne konstanten Wert musst du Pointer und new verwenden und diese schlimmen Sachen sollten in C++ vermieden werden.</p>
<p>Deshalb verwendet man für 2dimensionale Arrays:</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; a(groesse*groesse) // selbstgecodedes Jagged Array
std::vector&lt;std::vector&lt;int&gt;&gt; b(groesse) // Die Werte von b[0-groesse] müssen noch reserviert werden
oder boost::multi_array&lt;int, 2&gt; c(boost::extents[groesse][groesse]) // aus dem Kopf, vielleicht habe ich irgendwas vertauscht
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1971160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1971160</guid><dc:creator><![CDATA[.....]]></dc:creator><pubDate>Tue, 26 Oct 2010 20:34:07 GMT</pubDate></item><item><title><![CDATA[Reply to zweidimensionales Array übergeben... on Tue, 26 Oct 2010 20:34:44 GMT]]></title><description><![CDATA[<p>CharlieHarper schrieb:</p>
<blockquote>
<p>Wie würde es denn aussehen wenn ich z.B. über ein cin die Größe des Arrays bestimmen möchte?</p>
</blockquote>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;iostream&gt;

void f(const std::vector&lt;std::vector&lt;int&gt; &gt;&amp;)
{
}

int main()
{
    int dim1 = 0;
    int dim2 = 0;

    std::cin &gt;&gt; dim1 &gt;&gt; dim2;

    std::vector&lt;std::vector&lt;int&gt; &gt; array(dim1, std::vector&lt;int&gt;(dim2));

    f(array);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1971162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1971162</guid><dc:creator><![CDATA[Torsten Robitzki]]></dc:creator><pubDate>Tue, 26 Oct 2010 20:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to zweidimensionales Array übergeben... on Wed, 27 Oct 2010 18:32:14 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Danke für die vielen Antworten!<br />
Ich habe es jetzt mal so versucht wie Torsten Robitzki es geschrieben hat. Das erstellen funktioniert jetzt super und vom Syntax her meckert der Compiler nun auch nicht mehr.<br />
Allerdings habe ich nun, beim Funktionsaufruf folgenden Fehler :</p>
<p><a href="http://www.xup.in/pic,48400991/vector.png" rel="nofollow">http://www.xup.in/pic,48400991/vector.png</a></p>
<p>Ich habe mir die Vector Variable im Debugging-Modus angeschaut und dabei erfreut festgestellt, das die Initialisierung, nur wenn das Programm schließlich zum Funktionsaufruf kommt, erscheint diese Fehlermeldung.</p>
<p>Weiß da jemand evtl. bescheid?</p>
<p>Danke schonmal</p>
<p>LG</p>
<p>CharlieHarper</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1971667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1971667</guid><dc:creator><![CDATA[CharlieHarper]]></dc:creator><pubDate>Wed, 27 Oct 2010 18:32:14 GMT</pubDate></item><item><title><![CDATA[Reply to zweidimensionales Array übergeben... on Wed, 27 Oct 2010 18:39:22 GMT]]></title><description><![CDATA[<p>Du greifst auf einen Index zu, der zu groß ist. Zeig mal den Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1971675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1971675</guid><dc:creator><![CDATA[Panke]]></dc:creator><pubDate>Wed, 27 Oct 2010 18:39:22 GMT</pubDate></item><item><title><![CDATA[Reply to zweidimensionales Array übergeben... on Thu, 28 Oct 2010 12:54:55 GMT]]></title><description><![CDATA[<p>achh dankeschön. Ich habe lediglich die Größe des Vector´s falsch ausgelesen.</p>
<p>Allerdings hätte ich da noch eine Frage zu dem Thema Vectoren in c++ und zwar habe ich nun ja den 2D Vector. Ich möchte diesen nun per Pointer einer Funktion übergeben, dies mache ich denke ich mal richtig.<br />
Hier mal der Prototyp</p>
<pre><code class="language-cpp">bool sprungKorrekt(int anfangx, char anfangy, int sprungx, char sprungy, vector&lt;vector&lt;int&gt;&gt; *vekPoint);
</code></pre>
<p>Allerdings stehe ich momentan völlig auf dem Schlauch, wie ich nun einen Pointer von dem Vektor erstelle und wie ich anschließend in der Funktion von dem Pointer wieder zurück auf den Vektor komme.</p>
<p>Weiß jemand rat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1971919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1971919</guid><dc:creator><![CDATA[CharlieHarper]]></dc:creator><pubDate>Thu, 28 Oct 2010 12:54:55 GMT</pubDate></item><item><title><![CDATA[Reply to zweidimensionales Array übergeben... on Thu, 28 Oct 2010 16:45:45 GMT]]></title><description><![CDATA[<p>Ganz genauso wie bei <strong>allen</strong> anderen Typen auch: Der &amp;-Operator gibt einen Zeiger auf das Objekt auf welches er angewendet wird, der *-Operator dereferenziert einen Zeiger.</p>
<p>Bleibt aber die Frage: Wozu? Was würde hier nicht durch eine Referenz besser gelöst werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972041</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 28 Oct 2010 16:45:45 GMT</pubDate></item><item><title><![CDATA[Reply to zweidimensionales Array übergeben... on Thu, 28 Oct 2010 20:49:12 GMT]]></title><description><![CDATA[<p>CharlieHarper schrieb:</p>
<blockquote>
<pre><code class="language-cpp">bool sprungKorrekt(int anfangx, char anfangy, int sprungx, char sprungy, vector&lt;vector&lt;int&gt;&gt; *vekPoint);
</code></pre>
<p>Allerdings stehe ich momentan völlig auf dem Schlauch, wie ich nun einen Pointer von dem Vektor erstelle und wie ich anschließend in der Funktion von dem Pointer wieder zurück auf den Vektor komme.</p>
</blockquote>
<p>Wenn es den unbedingt ein pointer sein muss, wäre der Aufruf:</p>
<pre><code class="language-cpp">vector&lt;vector&lt;int&gt; &gt; v;
sprungKorrekt(42, 42, 42, 42, &amp;v);
</code></pre>
<p>Aber warum soll es ausgerechnet ein Zeiger sein? Wenn der 5te Parameter nicht optional sein soll und die Funktion in der Lage sein soll, die übergebenen Daten zu ändern, bietet sich eine Referenz an:</p>
<pre><code class="language-cpp">bool sprungKorrekt(int anfangx, char anfangy, int sprungx, char sprungy, vector&lt;vector&lt;int&gt; &gt; &amp;vekPoint);
</code></pre>
<p>mfg Torsten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972072</guid><dc:creator><![CDATA[Torsten Robitzki]]></dc:creator><pubDate>Thu, 28 Oct 2010 20:49:12 GMT</pubDate></item><item><title><![CDATA[Reply to zweidimensionales Array übergeben... on Thu, 28 Oct 2010 20:31:28 GMT]]></title><description><![CDATA[<p>Torsten Robitzki schrieb:</p>
<blockquote>
<p>Aber warum soll es ausgerechnet ein Zeiger sein? Wenn der 5te Parameter nicht optional sein soll und die Funktion in der Lage sein soll, die übergebenen Daten zu ändern, bietet sich eine Referenz an:</p>
<pre><code class="language-cpp">bool sprungKorrekt(int anfangx, char anfangy, int sprungx, char sprungy, vector&lt;vector&lt;int&gt;&gt; *vekPoint);
</code></pre>
</blockquote>
<p>Du hast den entscheidenden Unterschied vergessen. <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 />
Nimm für Referenzen <code>&amp;</code> statt <code>*</code> .</p>
<p>Und auch optionale Parameter kannst du mit Referenzen und Funktionsüberladung implementieren. In letzter Zeit tendiere ich dazu, diesen Weg dem nullbaren Zeiger und der entsprechenden If-Abfrage vorzuziehen.</p>
<p>Ach ja, und für portablen Code musst du ein Leerzeichen zwischen <code>&gt;</code> und <code>&gt;</code> haben.</p>
<pre><code class="language-cpp">vector&lt;vector&lt;int&gt; &gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1972128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972128</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 28 Oct 2010 20:31:28 GMT</pubDate></item><item><title><![CDATA[Reply to zweidimensionales Array übergeben... on Thu, 28 Oct 2010 20:48:44 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Du hast den entscheidenden Unterschied vergessen. <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>
</blockquote>
<p>Oh, danke für den Tip!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972143</guid><dc:creator><![CDATA[Torsten Robitzki]]></dc:creator><pubDate>Thu, 28 Oct 2010 20:48:44 GMT</pubDate></item><item><title><![CDATA[Reply to zweidimensionales Array übergeben... on Fri, 29 Oct 2010 07:13:47 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Ganz genauso wie bei <strong>allen</strong> anderen Typen</p>
</blockquote>
<p>... <em>die den unären operator&amp; nicht überladen haben</em> <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/1972213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972213</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 29 Oct 2010 07:13:47 GMT</pubDate></item></channel></rss>