<?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[Funktion mit mehrdimensionalem Array als Rückgabewert]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe leider in diesem und in anderen Foren keine befriedigende Antwort dazu gefunden.<br />
Wie deklariert man eine Funktion die einen mehrdimensionales Array als Rückgabewert hat? Ich habe folgendes versucht:</p>
<pre><code class="language-cpp">double** beispielfunktion(double argument1)
{
	double rueckgabewert[2][2] = {{1, 2},{1, 2}};
        return rueckgabewert;
}
</code></pre>
<p>und die Deklaration im *h genau so vorgenommen. Der Fehler lautet: error C2440: 'return': 'double [2][2]' kann nicht in 'double **' konvertiert werden.<br />
Wenn ich ein eindimensionales array verwende und dann die funktion mit double* deklariere funktioniert alles.</p>
<p>Deklaration mit double[][] geht auch nicht.</p>
<p>Anschließend dann gleich noch die Frage, wie man in diesem Fall den Aufruf programmiert? Bei dem eindimensionalen Array geht es mit:</p>
<pre><code class="language-cpp">dobule *ergebnis = beispielfunktion(input);
</code></pre>
<p>Hat jemand den Durchblick, warum das nicht funktioniert?<br />
Vielen Dank im Voraus</p>
<p>Pierre</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240032/funktion-mit-mehrdimensionalem-array-als-rückgabewert</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 01:52:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240032.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Apr 2009 19:19:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion mit mehrdimensionalem Array als Rückgabewert on Thu, 30 Apr 2009 19:19:21 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe leider in diesem und in anderen Foren keine befriedigende Antwort dazu gefunden.<br />
Wie deklariert man eine Funktion die einen mehrdimensionales Array als Rückgabewert hat? Ich habe folgendes versucht:</p>
<pre><code class="language-cpp">double** beispielfunktion(double argument1)
{
	double rueckgabewert[2][2] = {{1, 2},{1, 2}};
        return rueckgabewert;
}
</code></pre>
<p>und die Deklaration im *h genau so vorgenommen. Der Fehler lautet: error C2440: 'return': 'double [2][2]' kann nicht in 'double **' konvertiert werden.<br />
Wenn ich ein eindimensionales array verwende und dann die funktion mit double* deklariere funktioniert alles.</p>
<p>Deklaration mit double[][] geht auch nicht.</p>
<p>Anschließend dann gleich noch die Frage, wie man in diesem Fall den Aufruf programmiert? Bei dem eindimensionalen Array geht es mit:</p>
<pre><code class="language-cpp">dobule *ergebnis = beispielfunktion(input);
</code></pre>
<p>Hat jemand den Durchblick, warum das nicht funktioniert?<br />
Vielen Dank im Voraus</p>
<p>Pierre</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703859</guid><dc:creator><![CDATA[PierreM]]></dc:creator><pubDate>Thu, 30 Apr 2009 19:19:21 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit mehrdimensionalem Array als Rückgabewert on Thu, 30 Apr 2009 20:05:59 GMT]]></title><description><![CDATA[<p>Du kannst keine Arrays zurückgeben. Wrapper sind das Stichwort.</p>
<p>Entweder was Vorgefertigtes wie <code>std::tr1::array</code> , oder gleich eine eigene Klasse:</p>
<pre><code class="language-cpp">struct Table
{
    double Array[2][2];
};
</code></pre>
<p>Kann man natürlich noch beliebig ausbauen (zum Beispiel durch Konstruktoren, Methoden, Templates)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703875</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 30 Apr 2009 20:05:59 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit mehrdimensionalem Array als Rückgabewert on Thu, 30 Apr 2009 20:09:19 GMT]]></title><description><![CDATA[<p>Oder dynamisch an die Sache herangehen...</p>
<pre><code class="language-cpp">double** beispielfunktion(double argument1)
{
	// Größe des Arrays festlegen
	int rows = 2, cols = 2;

	// Speicher allokieren
    double **rueckgabewert = new double *[rows];
    for(int i=0; i &lt; rows; ++i)
		rueckgabewert[i] = new double[cols];

	// Array mit Werten initialisieren
	rueckgabewert[0][0] = rueckgabewert[1][0] = 1;
	rueckgabewert[0][1] = rueckgabewert[1][1] = 2;

	// Und jetzt das Ganze zurückgeben
    return rueckgabewert;
}
</code></pre>
<p>Man darf dann halt nicht vergessen dass man den Speicher hinterher auch wieder freigeben muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703879</guid><dc:creator><![CDATA[JustSomeCoder]]></dc:creator><pubDate>Thu, 30 Apr 2009 20:09:19 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit mehrdimensionalem Array als Rückgabewert on Thu, 30 Apr 2009 20:14:11 GMT]]></title><description><![CDATA[<p>JustSomeCoder schrieb:</p>
<blockquote>
<p>Man darf dann halt nicht vergessen dass man den Speicher hinterher auch wieder freigeben muss.</p>
</blockquote>
<p>Weswegen sich die Funktion eher weniger eignet; besonders, wenn es besser ohne dynamische Speicherverwaltung geht.</p>
<p>Wenn man die Flexibilität benötigt, zum Beispiel weil die Grösse erst zur Laufzeit bekannt ist, sollten STL-Container wie <code>std::vector</code> Vorrang haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703884</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 30 Apr 2009 20:14:11 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit mehrdimensionalem Array als Rückgabewert on Thu, 30 Apr 2009 20:25:30 GMT]]></title><description><![CDATA[<p>Mal ne kurze Frage die mich brennend interessiert. Ich programmier noch nicht solange und mache mir schon Gedanken über Dinge die ich bald irgendwann in Angriff nehmen möchte.<br />
Ich lese hier gerade von zweidimensionalen Arrays oder Vektoren.<br />
Könnte man mit zB einem zweidimensionalem Array über eine x und y Achse sowas wie eine Matrix in einer Konsole darstellen?<br />
Ich weiß jetzt nicht ob Matrix der richtige Begriff ist. Was ich meine ist das ich ein zweidimensionales Bild darstellen das ich in der Konsole mit fill() mit X Zeichen fülle. Und dann quasi über eine x und y Achse eine Stelle bestimmen kann in der das X durch ein O ersetzt wird. Ist sowas möglich? Irgendwie wird das sicher gehen, aber wie?<br />
Würde mich hier auch über Links freuen die das Thema ausführlich erklären.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703887</guid><dc:creator><![CDATA[Chiiter]]></dc:creator><pubDate>Thu, 30 Apr 2009 20:25:30 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit mehrdimensionalem Array als Rückgabewert on Mon, 04 May 2009 17:55:50 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Du kannst keine Arrays zurückgeben. Wrapper sind das Stichwort.</p>
<p>Entweder was Vorgefertigtes wie <code>std::tr1::array</code> , oder gleich eine eigene Klasse:</p>
<pre><code class="language-cpp">struct Table
{
    double Array[2][2];
};
</code></pre>
<p>Kann man natürlich noch beliebig ausbauen (zum Beispiel durch Konstruktoren, Methoden, Templates)...</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
Hallo,</p>
<p>vielen Dank für den super Tipp. An structs hab ich in der Situation gar nicht gedacht. Die einfache Art ohne Konstruktoren habe ich implementiert und das funzt auch. Den Rest muss ich mir noch mal anlesen. Sind struct eigendlich auch teil von C oder nur von C++?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705493</guid><dc:creator><![CDATA[pierremassello]]></dc:creator><pubDate>Mon, 04 May 2009 17:55:50 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit mehrdimensionalem Array als Rückgabewert on Mon, 04 May 2009 18:23:58 GMT]]></title><description><![CDATA[<p>pierremassello schrieb:</p>
<blockquote>
<p>Sind struct eigendlich auch teil von C oder nur von C++?</p>
</blockquote>
<p>Structs gibt es auch in C.</p>
<p>Viele Grüße,<br />
Skalli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705513</guid><dc:creator><![CDATA[Skalli]]></dc:creator><pubDate>Mon, 04 May 2009 18:23:58 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit mehrdimensionalem Array als Rückgabewert on Mon, 04 May 2009 20:38:24 GMT]]></title><description><![CDATA[<p>Skalli schrieb:</p>
<blockquote>
<p>Structs gibt es auch in C.</p>
</blockquote>
<p>Wobei <code>struct</code> in C++ bis auf den Default-Zugriff identisch zu <code>class</code> ist.</p>
<p>In C konnte man noch keine Memberfunktionen, Vererbung oder Zugriffsspezifizierer einsetzen. <code>struct</code> s waren damals reine Sammlungen von Daten. Zudem musste man bei der Deklaration von Variablen immer angeben, dass es sich um eine Struktur handelt, oder den Weg über <code>typedef struct</code> gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705581</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 04 May 2009 20:38:24 GMT</pubDate></item></channel></rss>