<?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[2D-Array(auf Heap) an Funktion übergeben?]]></title><description><![CDATA[<p>Hallo zusammen ...</p>
<p>Ich glaub ich stell mich wieder mal ziemlich doof an <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="😃"
    /><br />
Es soll Array[X][Y], welches auf dem Heap liegt an deine Funktion übergeben werden.<br />
<div class="plugin-markdown"><input type="checkbox" id="checkbox27133" checked="true" /><label for="checkbox27133">habe ich das eigentlich immer so gemacht, dass dann in der Funktion drin stand</label></div></p>
<pre><code class="language-cpp">void Funktion(int *Vektor)
</code></pre>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox27134" checked="true" /><label for="checkbox27134">gearbeitet hab.</label></div><br />
Übergeben habe ich den Vektor dann einfach mit</p>
<pre><code class="language-cpp">Funktion(Vektor);
</code></pre>
<p>Aber anscheinend lässt sich das nicht wirklich 1:1 auf 2D-Arrays übertragen!<br />
Schreibe ich</p>
<pre><code class="language-cpp">void Funktion2(int **Matrix)
</code></pre>
<p>und versuche über</p>
<pre><code class="language-cpp">Funktion2(Matrix);
</code></pre>
<p>Bekomme ich die Fehlermeldung &quot;error C2664: 'Funktion2': Konvertierung des Parameters 3 von 'int (*)[480]' in 'int ** ' nicht möglich<br />
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.&quot;</p>
<p>Was mach ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/230290/2d-array-auf-heap-an-funktion-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 10:01:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230290.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Dec 2008 15:03:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2D-Array(auf Heap) an Funktion übergeben? on Tue, 23 Dec 2008 15:03:15 GMT]]></title><description><![CDATA[<p>Hallo zusammen ...</p>
<p>Ich glaub ich stell mich wieder mal ziemlich doof an <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="😃"
    /><br />
Es soll Array[X][Y], welches auf dem Heap liegt an deine Funktion übergeben werden.<br />
<div class="plugin-markdown"><input type="checkbox" id="checkbox27133" checked="true" /><label for="checkbox27133">habe ich das eigentlich immer so gemacht, dass dann in der Funktion drin stand</label></div></p>
<pre><code class="language-cpp">void Funktion(int *Vektor)
</code></pre>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox27134" checked="true" /><label for="checkbox27134">gearbeitet hab.</label></div><br />
Übergeben habe ich den Vektor dann einfach mit</p>
<pre><code class="language-cpp">Funktion(Vektor);
</code></pre>
<p>Aber anscheinend lässt sich das nicht wirklich 1:1 auf 2D-Arrays übertragen!<br />
Schreibe ich</p>
<pre><code class="language-cpp">void Funktion2(int **Matrix)
</code></pre>
<p>und versuche über</p>
<pre><code class="language-cpp">Funktion2(Matrix);
</code></pre>
<p>Bekomme ich die Fehlermeldung &quot;error C2664: 'Funktion2': Konvertierung des Parameters 3 von 'int (*)[480]' in 'int ** ' nicht möglich<br />
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.&quot;</p>
<p>Was mach ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634691</guid><dc:creator><![CDATA[Mandel]]></dc:creator><pubDate>Tue, 23 Dec 2008 15:03:15 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array(auf Heap) an Funktion übergeben? on Tue, 23 Dec 2008 15:09:07 GMT]]></title><description><![CDATA[<p>Auch ein 2D-Array ist eigentlich nur ein 1D Array. Der Compiler übernimmt für dich die Umrechung. Wenn du aber eines an eine Funktion übergeben willst, und die Dimensionen nicht schon angibst, musst du sie auch von Hand übergeben.</p>
<p>Siehe hier für genaueres Vorgehen:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-212469-and-highlight-is-array+2+dimensionales.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-212469-and-highlight-is-array+2+dimensionales.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634698</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 23 Dec 2008 15:09:07 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array(auf Heap) an Funktion übergeben? on Tue, 23 Dec 2008 17:00:38 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void func(int (*t)[5]) { }
void func2(int x[2][5]) { }
void func3(int x[][5]) { }

...
int x[2][5];
func(x);
func2(x);
func3(x);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1634748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634748</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Tue, 23 Dec 2008 17:00:38 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array(auf Heap) an Funktion übergeben? on Tue, 23 Dec 2008 19:29:22 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt;typename T, std::size_t X, std::size_t Y&gt;
void foo(T(&amp; array)[X][Y])
{
	// Testanzeige, ob alles klappt.
	std::cout &lt;&lt; &quot;X: &quot; &lt;&lt; X &lt;&lt; &quot;\tY: &quot; &lt;&lt; Y &lt;&lt; std::endl;
}

int main()
{
	int a[10][20];
	foo(a);

	return 0;
}
</code></pre>
<p>So geht das :p</p>
<p>Oder jetzt nur mit <code>int</code> und nicht beliebige Typen, dann muss <code>foo</code> so aussehen:</p>
<pre><code class="language-cpp">template&lt;std::size_t X, std::size_t Y&gt;
void foo(int(&amp; array)[X][Y])
{
	// Testanzeige, ob alles klappt.
	std::cout &lt;&lt; &quot;X: &quot; &lt;&lt; X &lt;&lt; &quot;\tY: &quot; &lt;&lt; Y &lt;&lt; std::endl;
}
</code></pre>
<p>Es wird hier im übrigen eine Referenz übergeben, also keine Kopie <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>Grüssli</p>
<p>PS: Falls Templates noch nicht bekannt sind, lieber auf die Alternativen ausweichen <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/1634821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634821</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 23 Dec 2008 19:29:22 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array(auf Heap) an Funktion übergeben? on Tue, 23 Dec 2008 20:25:33 GMT]]></title><description><![CDATA[<p>Vielen Dank für euere Hilfe!<br />
Ich werde die verschiedenen Methoden gleich mal durchprobieren.<br />
Wobei ich sagen muss, dass Draveres Variante für mich ein wenig mysteriös aussieht <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/1634842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634842</guid><dc:creator><![CDATA[Mandel]]></dc:creator><pubDate>Tue, 23 Dec 2008 20:25:33 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array(auf Heap) an Funktion übergeben? on Tue, 23 Dec 2008 20:47:59 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>So geht das :p</p>
</blockquote>
<p>Aber auch nur so lange, wie die Dimensionen zur Kompilierzeit bekannt sind. <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>Es wird hier im übrigen eine Referenz übergeben, also keine Kopie</p>
</blockquote>
<p>Das wird ein Array immer. Oder war das nur eine Klarstellung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634860</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 23 Dec 2008 20:47:59 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array(auf Heap) an Funktion übergeben? on Tue, 23 Dec 2008 21:11:03 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Aber auch nur so lange, wie die Dimensionen zur Kompilierzeit bekannt sind. <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>Jap, und er hat was von Heap gesagt, also geht es wohl nicht <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="😕"
    /><br />
Meine Gedanken sind in den Ferien oder ich habe mich von this-&gt;that Beispiel ablenken lassen...</p>
<p>drakon schrieb:</p>
<blockquote>
<p>Das wird ein Array immer. Oder war das nur eine Klarstellung?</p>
</blockquote>
<p>Klarstellung.<br />
Wie Mandel gesagt hat, ist die Sache etwas mysteriös, da sollte man das schon nochmals klarstellen <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>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634868</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 23 Dec 2008 21:11:03 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array(auf Heap) an Funktion übergeben? on Tue, 23 Dec 2008 21:33:06 GMT]]></title><description><![CDATA[<p>Man kann sich auch eine Klasse basteln. Wenn die Dimensionen nicht immer gleich sind, halt ein Template. Da geht das Kopieren und Referenz-Übergeben etwas einfacher. <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>Oder man benutzt gleich Container.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634875</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 23 Dec 2008 21:33:06 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array(auf Heap) an Funktion übergeben? on Tue, 23 Dec 2008 21:40:14 GMT]]></title><description><![CDATA[<p>Ok... Also Klassen kenne ich, aber bei Templates sagen mir (noch) nichts. Und auch Container ist nen neues Wort für mich in dem Zusammenhang <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="😃"
    /><br />
Aber ich bin ja auch noch recht neu bei C++ <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/1634879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634879</guid><dc:creator><![CDATA[Mandel]]></dc:creator><pubDate>Tue, 23 Dec 2008 21:40:14 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array(auf Heap) an Funktion übergeben? on Tue, 23 Dec 2008 21:50:15 GMT]]></title><description><![CDATA[<p>Container sind fertige Klassen (also genauer gesagt Klassentemplates), die einem ermöglichen, mehrere Elemente gleichen Typs komfortabel zu speichern und zu verwalten. Das populärste Beispiel für Container ist die STL der C++-Standardbibliothek.</p>
<p>Wenn du mal Zeit hast, lohnt es sich auf jeden Fall, sich damit auseinanderzusetzen. Als Einstieg könntest du beispielsweise die <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html" rel="nofollow">Artikel</a> dieses Forums anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634884</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 23 Dec 2008 21:50:15 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array(auf Heap) an Funktion übergeben? on Tue, 23 Dec 2008 21:57:51 GMT]]></title><description><![CDATA[<p>Mandel schrieb:</p>
<blockquote>
<p>Ok... Also Klassen kenne ich, aber bei Templates sagen mir (noch) nichts. Und auch Container ist nen neues Wort für mich in dem Zusammenhang <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="😃"
    /><br />
Aber ich bin ja auch noch recht neu bei C++ <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>
</blockquote>
<p>Nur als kleinen Vorgriff: std::vector und std::tr1::array wären mögliche Kandidaten (Gibt aber noch einige mehr die je nach Fall besser geeignet sein können). Ersteres bei dynamischer Größe, letzteres (falls dein Compiler den TR1 bereits unterstützt) für fixe Größe.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634890</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 23 Dec 2008 21:57:51 GMT</pubDate></item></channel></rss>