<?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[Array aus Funktion zurückgeben]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich will einer Funktion 2 werte übergeben. Das funktioniert auch wunderbar.</p>
<p>Doch Wie kann ich dann beim return der Funktion einen Array ausgeben und wie weise ich die enzelnen Elemente des Arrays wieder einzelnen Variablen zu. So wie ich das gemacht habe, wird halt immer nur eine Zahl ausgegeben, klar dass das falsch sit, aber mir ist leider ncihts besseres eingefallen.</p>
<p>Könntet ihr mir da bitte HELFEN?</p>
<p>mfg anno</p>
<pre><code class="language-cpp">int rueck(int zahl1, int zahl2) {

	  int zahl[2];
	 zahl[0] = zahl1;
	  zahl[1] = zahl2;

	  return zahl1[0],zahl1[1];
}

int main(int argc, char* argv[])
{
	   int zahl1,zahl2;
	   int out[1];

	 cin &gt;&gt; zahl1;
	 cin &gt;&gt; zahl2;

	 out[0] = rueck(zahl1,zahl2);
	 out[1] = rueck(zahl1,zahl2);

	 cout &lt;&lt; out[0] &lt;&lt; &quot; &quot; &lt;&lt; out[1];;

	  getchar();
	  getchar();

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/169459/array-aus-funktion-zurückgeben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 17:38:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169459.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 05 Jan 2007 13:50:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array aus Funktion zurückgeben on Fri, 05 Jan 2007 13:50:46 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich will einer Funktion 2 werte übergeben. Das funktioniert auch wunderbar.</p>
<p>Doch Wie kann ich dann beim return der Funktion einen Array ausgeben und wie weise ich die enzelnen Elemente des Arrays wieder einzelnen Variablen zu. So wie ich das gemacht habe, wird halt immer nur eine Zahl ausgegeben, klar dass das falsch sit, aber mir ist leider ncihts besseres eingefallen.</p>
<p>Könntet ihr mir da bitte HELFEN?</p>
<p>mfg anno</p>
<pre><code class="language-cpp">int rueck(int zahl1, int zahl2) {

	  int zahl[2];
	 zahl[0] = zahl1;
	  zahl[1] = zahl2;

	  return zahl1[0],zahl1[1];
}

int main(int argc, char* argv[])
{
	   int zahl1,zahl2;
	   int out[1];

	 cin &gt;&gt; zahl1;
	 cin &gt;&gt; zahl2;

	 out[0] = rueck(zahl1,zahl2);
	 out[1] = rueck(zahl1,zahl2);

	 cout &lt;&lt; out[0] &lt;&lt; &quot; &quot; &lt;&lt; out[1];;

	  getchar();
	  getchar();

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1203594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203594</guid><dc:creator><![CDATA[anno]]></dc:creator><pubDate>Fri, 05 Jan 2007 13:50:46 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurückgeben on Fri, 05 Jan 2007 13:53:01 GMT]]></title><description><![CDATA[<p>Arrays direkt kannst du nicht ausgeben, höchstens Pointer (wobei du aber beachten mußt, daß ihr Speicher das Ende der Funktion überlebt) oder Containerklassen.</p>
<p>(aber dazu gibt es hier schon etliche Threads - schau dich mal ein wenig im Board um ;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1203596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203596</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 05 Jan 2007 13:53:01 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurückgeben on Fri, 05 Jan 2007 13:53:34 GMT]]></title><description><![CDATA[<p>Bei zwei Werten ist es einfach:</p>
<pre><code class="language-cpp">#include &lt;utility&gt;

std::pair&lt; int, int &gt; foo( int zahl1, int zahl2 )
{
  return std::make_pair( zahl1, zahl2 );
}

int main()
{
  std::pair&lt; int, int &gt; zweiZahlen( foo( 2, 3 ) );

  int zahl1 = zweiZahlen.first;
  int zahl2 = zweiZahlen.second;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1203598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203598</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Fri, 05 Jan 2007 13:53:34 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurückgeben on Fri, 05 Jan 2007 14:04:28 GMT]]></title><description><![CDATA[<p>Bei drei Werten auch: <a href="http://thedailywtf.com/forums/thread/109194.aspx" rel="nofollow">http://thedailywtf.com/forums/thread/109194.aspx</a></p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1203604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203604</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 05 Jan 2007 14:04:28 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurückgeben on Fri, 05 Jan 2007 14:20:23 GMT]]></title><description><![CDATA[<p>Ähm, eine Sache noch: Du deklarierst <em>int out[1];</em>. Liest dann aber in out[0] und out[1] ein. Die Variable kann aber nur <strong>ein</strong> Element beinhalten, weil out**[1]**! Also <em>int out[2];</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/1203626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203626</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 05 Jan 2007 14:20:23 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurückgeben on Fri, 05 Jan 2007 14:57:23 GMT]]></title><description><![CDATA[<p>anno schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int rueck(int zahl1, int zahl2) { // Wenn das Array zurückgegeben werden soll
  // (und nicht nur zahl1[1]), dann muss der Typ des Rückgabewertes int* sein,
  // nicht nur int.

	  int zahl[2];
	 zahl[0] = zahl1;
	  zahl[1] = zahl2;

	  return zahl1[0],zahl1[1]; /* hier kommt allerdings nur zahl1[1] wieder
  zum Aufrufer der Funktion zurück */
}
</code></pre>
</blockquote>
<p>Nach diesen Überlegungen definieren wir die Funktion etwas anders:</p>
<pre><code class="language-cpp">int* rueck(int zahl1, zahl2){ // int* statt int
 int* zahl = new int[2];
 zahl[0]=zahl1;
 zahl[1]=zahl2;
return zahl; // dieses Mal kommt tatsächlich das komplette Array zurück,
   // und nicht nur der Wert von zahl[1];
}
</code></pre>
<p>Jetzt nehmen wir noch die main() unter die Lupe</p>
<blockquote>
<pre><code class="language-cpp">int main(int argc, char* argv[])
{
	   int zahl1,zahl2;
	   int out[1];  // Dieses Array ist erstmal zu klein, um darin
      // zwei Zahlen zu speichern, so wie es weiter unten im Programm
      // geschieht. Statische Arrays sind problematisch, weil der Arrayname
      // nicht auf der linken Seite einer Zuweisung stehen kann.
      // out = rueck(5,6) ist also beispielsweise nicht erlaubt

	 cin &gt;&gt; zahl1;
	 cin &gt;&gt; zahl2;

	 out[0] = rueck(zahl1,zahl2); // Das hier habe ich gemeint
	 out[1] = rueck(zahl1,zahl2); // es ist nur für eine Zahl Platz im Array

	 
       cout &lt;&lt; out[0] &lt;&lt; &quot; &quot; &lt;&lt; out[1]; // Die einzigen Arrays, die cout &lt;&lt;
      // standardmäßig 'als Ganzes' ausgeben kann, sind char-Arrays
      // bei int-Arrays ist das nicht möglich

	  getchar(); // wieso?
	  getchar();

	return 0;
}
</code></pre>
</blockquote>
<p>Nach all diesen Überlegungen schreiben wir die main() in modifizierter Form<br />
noch einmal, außerdem wäre auch eine Ausgabefunktion für ein komplettes<br />
Array günstig.</p>
<pre><code class="language-cpp">// Diese Funktion sollte dazu geeignet sein, das int-Array auszugeben
// (was ja cout &lt;&lt; nicht kann)

#include&lt;stdio.h&gt;  // dafür brauchen wir &lt;iostream&gt; und namespace std nicht
 // mehr zu schreiben
void ausgabefunktion(int* Array,unsigned Elementezahl){
 for(int i=0;i&lt;Elementezahl;i++)
  printf(&quot;%d\n&quot;,Array[i]);
}  // ausgabefunktion() können wir ab jetzt dazu verwenden, int-Arrays
   // komplett auszugeben

int main(int argc, char* argv[]){
 int zahl1=0,zahl2=0; // Einige neuere Compiler bekritteln sogar schon fehlende
    // Initialisierungen

 int* out=new int[2]; // Dieses Array ist gut für unsere Zwecke geeignet

 scanf(&quot;%d%d&quot;,&amp;zahl1,&amp;zahl2); // Macht das gleiche wie cin &gt;&gt; zahl1,
  // (etwas weniger fehleranfällig als cin &gt;&gt;)

 // Und jetzt bekommen wir ohne Probleme das komplette Array von der Funktion
 // rueck() zurückgegeben, können also schreiben:

 out = rueck(zahl1,zahl2);

 // Und auch die Ausgabe ist kein Problem mehr
 ausgabefunktion(out,2); // gibt das komplette Array aus

 return 0;
}
</code></pre>
<p>So fragwürdig der Sinn des Programmes auch ist, aber in etwa so sollte es funktionieren!</p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1203676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203676</guid><dc:creator><![CDATA[Prüforgan]]></dc:creator><pubDate>Fri, 05 Jan 2007 14:57:23 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurückgeben on Fri, 05 Jan 2007 15:04:18 GMT]]></title><description><![CDATA[<p>Klar die Loesung ist super, macht ja nix dass du keine Ahnung hast, der Quellcode schlecht ist, und noch tolle Speicherleaks erzeugt.</p>
<p>Alle die von diesem ,,Prüforgan`` je geprüft wurden tun mir schrecklich leid.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1203681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203681</guid><dc:creator><![CDATA[Entenwickler]]></dc:creator><pubDate>Fri, 05 Jan 2007 15:04:18 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurückgeben on Fri, 05 Jan 2007 15:17:41 GMT]]></title><description><![CDATA[<p>Prüforgan schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// (etwas weniger fehleranfällig als cin &gt;&gt;)
</code></pre>
</blockquote>
<p>OMFG <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Von dem doppelten new und den zwei Speicherlecks will ich garnicht sprechen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1203691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203691</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 05 Jan 2007 15:17:41 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurückgeben on Fri, 05 Jan 2007 15:46:46 GMT]]></title><description><![CDATA[<p>Entenwickler schrieb:</p>
<blockquote>
<p>Klar die Loesung ist super, macht ja nix dass du keine Ahnung hast, der Quellcode schlecht ist, und noch tolle Speicherleaks erzeugt.</p>
<p>Alle die von diesem ,,Prüforgan`` je geprüft wurden tun mir schrecklich leid.</p>
</blockquote>
<p>Bei der Anforderung von Speicherplatz für insgesamt 4 int-Werte (16 Bytes, au!) von Speicherleaks zu sprechen ist lächerlich. Das demaskiert nur die totale Inkompetenz des Posters. Der Quellcode ist jedenfalls gut genug. Schlag erst etwas besseres vor, dann kann man Deine oberklugen Abqualifizierungen von Quelltexten als 'schlecht' vielleicht auch einmal ernst nehmen.</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/1203712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203712</guid><dc:creator><![CDATA[Prüforgan]]></dc:creator><pubDate>Fri, 05 Jan 2007 15:46:46 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurückgeben on Fri, 05 Jan 2007 15:50:08 GMT]]></title><description><![CDATA[<p>Jeder Speicherverlust ist schlecht - und normalerweise ruft man so eine Funktion auch nicht nur einmal auf, dann läppern sich die Verluste ziemlich schnell.</p>
<p>Und bessere Möglichkeiten gibt es genug: Der einfachste Ansatz ist es wohl, sich vom Anwender das Array zu geben und zu füllen. Alternativ kannst du auch std::vector (oder in diesem Beispiel std::pair) verwenden.</p>
<p>PS: Und wenn du dich ein wenig besser mit der Speicherverwaltung auskennst, kannst du mal drüber nachdenken, wie man deine Funktion korrekt umsetzen kann <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/1203717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203717</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 05 Jan 2007 15:50:08 GMT</pubDate></item></channel></rss>