<?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[returnen von mehreren werten?]]></title><description><![CDATA[<p>abend!</p>
<p>also, ich habe eine funktion, die eigentlich 2 werte zurückgeben soll. geht das? ich glaube eher nich aber ich frage trotzdem mal <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>da hokage</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185222/returnen-von-mehreren-werten</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 02:53:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185222.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 22 Jun 2007 18:13:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 18:13:40 GMT]]></title><description><![CDATA[<p>abend!</p>
<p>also, ich habe eine funktion, die eigentlich 2 werte zurückgeben soll. geht das? ich glaube eher nich aber ich frage trotzdem mal <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>da hokage</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311732</guid><dc:creator><![CDATA[hokage]]></dc:creator><pubDate>Fri, 22 Jun 2007 18:13:40 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 18:21:57 GMT]]></title><description><![CDATA[<p>Man kann immer nur EINEN Wert zurückgeben, du kannst die beiden Werte aber in ein struct packen:</p>
<pre><code class="language-cpp">struct Pair
{
    int first, second;
};

Pair ThisFuncReturnsTwoValuesInAStruct(void)
{
    //do something and return a Pair
}
</code></pre>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311734</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Fri, 22 Jun 2007 18:21:57 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 18:23:01 GMT]]></title><description><![CDATA[<p>Kannst nen Vektor zurückgeben. Oder halt über Parameter (Referenzen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311735</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Fri, 22 Jun 2007 18:23:01 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 18:23:14 GMT]]></title><description><![CDATA[<p>vielen dank!</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/1311736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311736</guid><dc:creator><![CDATA[hokage]]></dc:creator><pubDate>Fri, 22 Jun 2007 18:23:14 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 18:23:22 GMT]]></title><description><![CDATA[<p>Kommt darauf an welcher Art diese Werte sind.</p>
<p>Du könntest eine Struktur erstellen, und diese zurückgeben:</p>
<pre><code class="language-cpp">struct ResultA
{
 float wert1;
 int   wert2;
};

ResultA Funktion()
{
 //...
 ResultA data;
 data.wert1 = 0;
 data.wert2 = 1;

 return data;
}
</code></pre>
<p>Oder du benutzt einfach Zeiger / Referenzen:</p>
<pre><code class="language-cpp">void Funktion(float* wert1, int* wert2)
{
  // ...
  *wert1 = 0;
  *wert2 = 1;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1311737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311737</guid><dc:creator><![CDATA[MAG]]></dc:creator><pubDate>Fri, 22 Jun 2007 18:23:22 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 18:23:29 GMT]]></title><description><![CDATA[<p>Nicht direkt.<br />
<a href="http://www.boost.org/libs/tuple/doc/tuple_users_guide.html" rel="nofollow">http://www.boost.org/libs/tuple/doc/tuple_users_guide.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311738</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Fri, 22 Jun 2007 18:23:29 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 18:24:36 GMT]]></title><description><![CDATA[<p>Der einfachste Weg ist sicherlich mit Referenzen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

void getTwoNumbers(int&amp; number_1, int&amp; number_2)
{
    number1 = 5;
    number2 = 17;
}

int main()
{
    int num_1 = 0, num_2 = 0;
    std::cout &lt;&lt; num_1 &lt;&lt; ' ' &lt;&lt; num_2 &lt;&lt; std::endl;
    getTwoNumbers(num_1, num_2);
    std::cout &lt;&lt; num_1 &lt;&lt; ' ' &lt;&lt; num_2 &lt;&lt; std::endl;

    std::cin.get();
    return 0;
}
</code></pre>
<p>Es gibt natürlich noch mehr Möglichkeiten z.B. einen Vector returnen oder boost::tuple verwenden. Kommt immer auf das konkrete Problem an.</p>
<p>Edit: viel zu spät...</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311740</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Fri, 22 Jun 2007 18:24:36 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 18:24:03 GMT]]></title><description><![CDATA[<p>ja</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;utility&gt;
#include &lt;iostream&gt;

std::pair&lt; int, std::string &gt; foo( ) {

	return std::pair&lt; int, std::string &gt;( 43, &quot;stupid question&quot; );
}
int main( ) {

	std::cout &lt;&lt; foo( ).first &lt;&lt; &quot;, &quot; &lt;&lt; foo( ).second &lt;&lt; std::endl;
}
</code></pre>
<p>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311741</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Fri, 22 Jun 2007 18:24:03 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 19:53:56 GMT]]></title><description><![CDATA[<p>kann ich da auch variablen aus der entsprechenden funktion reinpacken?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311781</guid><dc:creator><![CDATA[hokage]]></dc:creator><pubDate>Fri, 22 Jun 2007 19:53:56 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 19:58:45 GMT]]></title><description><![CDATA[<p>Sieben Antworten innerhalb drei Minuten <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="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311782</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 22 Jun 2007 19:58:45 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 20:05:21 GMT]]></title><description><![CDATA[<p>das is eben das c++ forum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311785</guid><dc:creator><![CDATA[hokage]]></dc:creator><pubDate>Fri, 22 Jun 2007 20:05:21 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 20:39:15 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/15611">@hokage</a>: formuliere deine Frage bitte präziser.<br />
Du wirst sicherlich einsehen, dass man nicht erkennen kann was du mit &quot;Variablen aus der entsprechenden Funktion&quot; meinst.</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311801</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Fri, 22 Jun 2007 20:39:15 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 21:01:33 GMT]]></title><description><![CDATA[<p>in der funktion werden 2 koordinaten herausgesucht und diese sollen dann zurückgegebn werden</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;utility&gt;
#include &lt;iostream&gt;

std::pair&lt; int, std::string &gt; foo( ) {
    int x;
    //festlegung x
    x= irgendwas;
    int y;
    //festlegung y
    y = auchirgendwas;
    return std::pair&lt; int, int &gt;( x,y );
}
int main( ) {

    std::cout &lt;&lt; foo( ).first &lt;&lt; &quot;, &quot; &lt;&lt; foo( ).second &lt;&lt; std::endl;
}
</code></pre>
<p>nur um ma bei dem code zu bleiben <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/1311809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311809</guid><dc:creator><![CDATA[hokage]]></dc:creator><pubDate>Fri, 22 Jun 2007 21:01:33 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 21:05:46 GMT]]></title><description><![CDATA[<p>ja,kannst du<br />
aber bei dem beispiel da dürfts probleme geben,da deine funktion &lt;int,string&gt; zurückgeben muss,du aber &lt;int,int&gt; rausgibst</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311814</guid><dc:creator><![CDATA[abend]]></dc:creator><pubDate>Fri, 22 Jun 2007 21:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 21:08:20 GMT]]></title><description><![CDATA[<p>öhm stimmt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>ok, danke nochma für die hilfe <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1311816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311816</guid><dc:creator><![CDATA[hokage]]></dc:creator><pubDate>Fri, 22 Jun 2007 21:08:20 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 21:18:24 GMT]]></title><description><![CDATA[<p>Wenn es mit 2 &quot;int&quot; gehen soll musst du natürlich</p>
<pre><code class="language-cpp">std::pair&lt;int, std::string&gt;
</code></pre>
<p>in</p>
<pre><code class="language-cpp">std::pair&lt;int, int&gt;
</code></pre>
<p>ändern.</p>
<p>BTW: boost enthält eine Template Klasse namens &quot;tuple&quot; die auch mehr als 2 Elemente halten kann. Und eine nette erweiterung namens &quot;tie&quot; mit der man dann folgendes machen kann:</p>
<pre><code class="language-cpp">boost::tuple&lt;int, int, int&gt; foo()
{
    return boost::tuple&lt;int, int, int&gt;(1, 2, 3);
}

std::pair&lt;int, int&gt; bar()
{
    return std::pair&lt;int, int&gt;(1, 2);
}

void baz()
{
    int x, y, z;
    boost::tie(x, y, z) = foo();
    // nun ist x == 1, y == 2 und z == 3 :)

    // und geht natürlich auch mit std::pair
    boost::tie(x, y) = bar();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1311822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311822</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 22 Jun 2007 21:18:24 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 21:32:43 GMT]]></title><description><![CDATA[<p>Hya ! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>hokage schrieb:</p>
<blockquote>
<p>kann ich da auch variablen aus der entsprechenden funktion reinpacken?</p>
</blockquote>
<p>törlich</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;time.h&gt;
using namespace std;

void umlaute_string( string&amp; str )
{
	unsigned long i = 0;
	unsigned char c = 0;

	//if ( GetConsoleOutputCP() != 850 ) return NULL;

	for ( i; i &lt; str.size(); i++ )
	{
		c = str.at(i);
		switch ( c )
		{
			case 228: // Ä
				 str.at(i) = (char)132;
			break;

			case 196: // ä
				 str.at(i) = (char)142;
		    break;

			case 246: // ö
				str.at(i) = (char)148; 
		    break;

			case 214: // Ö
				 str.at(i) = (char)153;
		    break;

			case 252: // ü
				 str.at(i) = (char)129;
		    break;

			case 220: // Ü
				 str.at(i) = (char)154;
		    break;

			case 223: // ß
				 str.at(i) = (char)225;
		    break;
		}
	}
}

int multi_returner( int&amp; c ) // multi ritöörna !!!
{
	static int y = 0;
	int Variable_In_Entsprechender_Funktion;

	for ( int i = 0; i &lt; 100; i++ )
	{
		Variable_In_Entsprechender_Funktion = rand();
	}

	c = Variable_In_Entsprechender_Funktion;

	return y += 1;

}

int main()
{
	unsigned  n = 0;
	int Variable_Aus_Entsprechender_Funktion;

	srand( (unsigned)time( NULL ) );

	string str(&quot;Just a test ääähöömmmiaüüüüüü&quot;);
	string str1(&quot;ritöörned ??? &quot;);
	string str2(&quot;hätten&quot;);
	string str3(&quot;ritöörned &quot;);

	umlaute_string( str  );
	umlaute_string( str1  );
	umlaute_string( str2  );
	umlaute_string( str3  );

	cout &lt;&lt; str &lt;&lt; endl;

	cout &lt;&lt; &quot;Wie viele Werte &quot; &lt;&lt; str2 &lt;&lt;  &quot; haetten Sie denn gern &quot; &lt;&lt; str1;
	cin &gt;&gt; n;

	if ( n &lt; 5 )
	{
		cout &lt;&lt; &quot;Iiiiiiiiiih sind Sie aber knauserig ! &quot; &lt;&lt; endl;
		return 0;
	}

	if ( (signed)n &lt; 0 )
	{
		cout &lt;&lt; &quot;Doch so viele ? &quot; &lt;&lt; endl;
		return 0;
	}

	for ( int i = 0; i &lt; n; i++ )
	{
		cout &lt;&lt; str3 &lt;&lt; multi_returner( Variable_Aus_Entsprechender_Funktion) &lt;&lt; endl;
		cout &lt;&lt; &quot;(RANDOM)Variable_Aus_Entsprechender_Funktion: &quot;;
		cout &lt;&lt; Variable_Aus_Entsprechender_Funktion &lt;&lt; endl;
	}

	return 0;
}
</code></pre>
<p>MfG,<br />
p.</p>
<p>--------------------------------------------------------------------------------<br />
Boost Me Up !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311830</guid><dc:creator><![CDATA[proggingm@nia]]></dc:creator><pubDate>Fri, 22 Jun 2007 21:32:43 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 22:23:50 GMT]]></title><description><![CDATA[<p>proggingm@nia schrieb:</p>
<blockquote>
<p>Boost Me Up !</p>
</blockquote>
<p>Ok, gern !<br />
Here we go:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

namespace OVER_BOOOSTERRR 
{
	class MyOVER_BOOOSTER
	{
		private:

			string boost_me;
		public:

			MyOVER_BOOOSTER()
			{
				boost_me = &quot;BOOOOOOOOOOOOOOOOOOOOOOOOOOOOST !!! &quot;;
			}

			string boost_me_up_exclamation_mark() const
			{
				return boost_me;
			}
	};

	ostream &amp;operator&lt;&lt;( ostream &amp;ostr, const MyOVER_BOOOSTER&amp; mb ) 
	{ 
		ostr &lt;&lt; mb.boost_me_up_exclamation_mark();
		return ostr;
	} 
}

namespace proggingmania = OVER_BOOOSTERRR;

int main()
{
	cout &lt;&lt; &quot;boost - booster is going to boost: &quot; &lt;&lt; endl;
	cout &lt;&lt;  &quot;boost(piep)&quot; &lt;&lt; endl;
	cout &lt;&lt; &quot;done.&quot; &lt;&lt; endl;

    cout &lt;&lt; endl &lt;&lt; endl &lt;&lt; endl;

	using namespace proggingmania;
	MyOVER_BOOOSTER BOOOSTER;
	cout &lt;&lt; &quot;Proggingmanias - booster is going to boost: &quot; &lt;&lt; endl;
	cout &lt;&lt; &quot;Sure you are ready for this ? Type: [y/n] and ENTER &quot;;

    char c; cin &gt;&gt; c;
	if ( c == 'y' || c == 'Y' )
	{
		 cout &lt;&lt; BOOOSTER &lt;&lt; endl;
		 cout &lt;&lt; &quot;DONE.&quot; &lt;&lt; endl;
	}
	else
	{
	   cout &lt;&lt; &quot;Har Har little coward&quot; &lt;&lt; endl;
	}

	int dummy;
	cin &gt;&gt; dummy;
	return 0;
}

MfG
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1311855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311855</guid><dc:creator><![CDATA[proggingm@ni@]]></dc:creator><pubDate>Fri, 22 Jun 2007 22:23:50 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 23:22:12 GMT]]></title><description><![CDATA[<p>Nein, es ist nicht möglich, dass eine Funktion mehrere Werte zurückgibt.</p>
<p>Sei f eine Menge von geordneten Paaren.<br />
f ist genau dann eine Funktion, falls für alle a,b,c Folgendes gilt:<br />
(a,b) ε f UND aus (a,c) ε f FOLGT b == c<br />
Grundsatz der Rechtseindeutigkeit. Was auch immer diese Definition nicht erfüllt, ist keine Funktion. So sehen es die Mathematiker.</p>
<p>Ähnliche Gedanken haben sich die Entwickler der Programmiersprachen gemacht, und weil obendrein ein Register nur 32 Bit oder 64 Bit breit sein kann, andererseits der Aufrufer einer Funktion sich aus diesem einen Register bedient und dessen Inhalt als Rückgabewert der Funktion interpretiert, kann höchstens ein Zeiger auf einen mittels calloc oder malloc oder new angeforderten Speicherbereich buchstäblich an den Aufrufer 'zurückgegeben' werden. Hoffentlich verwaltet irgendeine globale Funktion den Speicher, um nicht unnötig Speicherlöcher durch den Funktionsaufruf verursachen zu lassen. Aber auch andernfalls ist immer noch das gute alte Betriebssystem dafür zuständig, die letztendliche Kommunikation mit der MMU zu führen. Wie schön für den Programmierer.</p>
<p>Wie auch immer, es ist ÜBLICH und GESUND, einer Funktion, die mehrere Rückgabewerte haben soll (und das ist nicht gerade selten), einen Zeiger auf einen VOM AUFRUFER bereitgestellten Speicherbereich als Parameter zu übergeben, in den die Funktion ihre Resultate hineinschreiben kann. (1)<br />
Nach dem Aufruf der Funktion kann sich der Aufrufer aus seinem von ihm selbst verursachten Speicherloch bedienen und die Daten weiterverarbeiten.</p>
<p>Eine Funktion im Programmier-Technischen Sinn kann also entgegen aller mathematischer Definitionen durchaus - zumindest indirekt - weit mehr als nur einen Wert zurückliefern. Aber eben nur indirekt.<br />
Nur muss eben der Aufrufer auch den Speicherbereich für die vielen Werte bereitstellen. Oder auch nicht. Speziell dann, wenn der Programmierer groben Unfug als Parameter an die Funktion übergibt. Dann hat es sich der Aufrufer auch nicht verdient, dass die Funktion korrekte Werte 'indirekt' zurückliefert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311876</guid><dc:creator><![CDATA[Karawarankarahahaha]]></dc:creator><pubDate>Fri, 22 Jun 2007 23:22:12 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 23:33:28 GMT]]></title><description><![CDATA[<p>Karawarankarahahaha schrieb:</p>
<blockquote>
<p>Was auch immer diese Definition nicht erfüllt, ist keine Funktion. So sehen es die Mathematiker.<br />
Ähnliche Gedanken haben sich die Entwickler der Programmiersprachen gemacht, und weil obendrein ein Register nur 32 Bit oder 64 Bit breit sein kann...</p>
</blockquote>
<p>wie in mathe eine funktion definiert ist, oder wie's auf maschinenebene abläuft, steht doch gar nicht zu debatte. in 'besseren' programmiersprachen kann eine funktion beliebig viele werte ausspucken, auch ohne speicherlöcher zu erzeugen <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 />
das ist einfach so...<br />
<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>
]]></description><link>https://www.c-plusplus.net/forum/post/1311879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311879</guid><dc:creator><![CDATA[pale dog]]></dc:creator><pubDate>Fri, 22 Jun 2007 23:33:28 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Fri, 22 Jun 2007 23:56:40 GMT]]></title><description><![CDATA[<p>pale dog schrieb:</p>
<blockquote>
<p>Karawarankarahahaha schrieb:</p>
<blockquote>
<p>Was auch immer diese Definition nicht erfüllt, ist keine Funktion. So sehen es die Mathematiker.<br />
Ähnliche Gedanken haben sich die Entwickler der Programmiersprachen gemacht, und weil obendrein ein Register nur 32 Bit oder 64 Bit breit sein kann...</p>
</blockquote>
<p>das ist einfach so...<br />
<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>
</blockquote>
<p>Das wäre allerdings eine Überraschung. Sozusagen packt die Funktion mehrere Rückgabewerte einfach in ein 32- oder 64- bit Register, und der Aufrufer freut sich darüber.<br />
Vielleicht gibt's das ja in einer modernen Fassung von Hauff's Märchen. Es wäre jedenfalls ein märchenhaftes Wunder der Technik. <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/1311885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311885</guid><dc:creator><![CDATA[Karawarankahahaha]]></dc:creator><pubDate>Fri, 22 Jun 2007 23:56:40 GMT</pubDate></item><item><title><![CDATA[Reply to returnen von mehreren werten? on Sat, 23 Jun 2007 10:02:20 GMT]]></title><description><![CDATA[<p>Karawarankarahahaha schrieb:</p>
<blockquote>
<p>Wie auch immer, es ist ÜBLICH und GESUND, einer Funktion, die mehrere Rückgabewerte haben soll (und das ist nicht gerade selten), einen Zeiger auf einen VOM AUFRUFER bereitgestellten Speicherbereich als Parameter zu übergeben, in den die Funktion ihre Resultate hineinschreiben kann.</p>
</blockquote>
<p>Soo ein Quark. Und dann noch ohne Begründung. Merke: Caps Lock schreit stets nach einer Begründung.</p>
<p>Wieso ist es üblich (habe ich in C++-Code außer in Spezialfällen und bei 'swap' noch nicht gesehen)? Wieso ist es gesund?</p>
<p>Was spricht dagegen, ein Tupel zurückzugeben und den Compiler die Optimierung (NROV ...) machen zu lassen? Der Mathematiker hätte zumindest *nichts* dagegen, denn aus dessen Sicht befindet man sich halt in einem höherdimensionalem Raum und gibt einen Vektor zurück -- so what? Das machen die sowieso den ganzen Tag, ohne sich dran zu stoßen.</p>
<p>@alle, die hier immer 'std::pair&lt;T1, T2&gt;' durch die Gegend werfen: Mögt ihr 'std::make_pair' nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1312002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1312002</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sat, 23 Jun 2007 10:02:20 GMT</pubDate></item></channel></rss>