<?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[Pointer und Referenzen, oder wie ich den Kampf verloren habe.]]></title><description><![CDATA[<p>Servus meine Herren,<br />
zwecks Klausur Vorbereitung habe ich diese sagenhafte Aufgabe vor mir wo ich einfach am Ende bin und nicht weiter weiß.</p>
<p><a href="http://abload.de/image.php?img=cpul67.jpg" rel="nofollow"></a><a href="https://abload.de/thumb/cpul67.jpg" rel="nofollow">https://abload.de/thumb/cpul67.jpg</a></p>
<p>Punkt 1 und 2 glaube ich habe ich soweit gelöst. Nur bei der dritten Funktion bin ich verloren, alles versucht, verkrampft und mich endgültig geschlagen gegeben.<br />
Hier der Code.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

int squareMe(int var1, int var2,unsigned int &amp;erg1,unsigned int &amp;erg2);
float halfMe(float var11, float *p_var11, float var22, float *p_var22);

double  negateMe();

int main()

{
	int var1;
	int var2;
	unsigned int erg1;
	unsigned int erg2;

	cout &lt;&lt; &quot;Funktion squareMe, geben sie jeweils zwei Paramter ein&quot; &lt;&lt; endl;
	cin &gt;&gt; var1;
	cin &gt;&gt; var2;
	squareMe(var1, var2, erg1, erg2);
	cout &lt;&lt; var1 &lt;&lt; &quot;\n&quot; &lt;&lt; var2 &lt;&lt; endl;
	cout &lt;&lt; erg1 &lt;&lt; &quot;\n&quot;  &lt;&lt; erg2 &lt;&lt; endl;

	float var11;
	float p_var11;
	float var22;
	float p_var22;

	cout &lt;&lt; &quot;Funktion halfMe, geben sie jeweils zwei Paramter ein&quot; &lt;&lt; endl;
	cin &gt;&gt; var11;
	cin &gt;&gt; var22;
	halfMe(var11, &amp;p_var11, var22, &amp;p_var22);
	cout &lt;&lt; p_var11 &lt;&lt; endl;
	cout &lt;&lt; p_var22 &lt;&lt; endl;

	cout &lt;&lt; &quot;Funktion halfMe, geben sie jeweils zwei Paramter ein&quot; &lt;&lt; endl;

	system(&quot;pause&quot;);
	return 0;
}

int squareMe(int var1, int var2, unsigned int &amp;erg1,unsigned int &amp;erg2)
{

	erg1 = var1 * var1;
	erg2 = var2 * var2;

	return 0;
} 

float halfMe(float var11, float *p_var11, float var22, float *p_var22)
{
	*p_var11 = var11 / 2;
	*p_var22 = var22 / 2;
	return 0;
}

double  negateMe()
{

	return 0;
}
</code></pre>
<p>Wie zum Teufel soll ich die Funktion mit zwei Referenzen laut Aufgabenstellung zusammen wurschteln?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/339274/pointer-und-referenzen-oder-wie-ich-den-kampf-verloren-habe</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 07:33:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/339274.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 17 Aug 2016 21:47:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer und Referenzen, oder wie ich den Kampf verloren habe. on Wed, 17 Aug 2016 21:47:17 GMT]]></title><description><![CDATA[<p>Servus meine Herren,<br />
zwecks Klausur Vorbereitung habe ich diese sagenhafte Aufgabe vor mir wo ich einfach am Ende bin und nicht weiter weiß.</p>
<p><a href="http://abload.de/image.php?img=cpul67.jpg" rel="nofollow"></a><a href="https://abload.de/thumb/cpul67.jpg" rel="nofollow">https://abload.de/thumb/cpul67.jpg</a></p>
<p>Punkt 1 und 2 glaube ich habe ich soweit gelöst. Nur bei der dritten Funktion bin ich verloren, alles versucht, verkrampft und mich endgültig geschlagen gegeben.<br />
Hier der Code.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

int squareMe(int var1, int var2,unsigned int &amp;erg1,unsigned int &amp;erg2);
float halfMe(float var11, float *p_var11, float var22, float *p_var22);

double  negateMe();

int main()

{
	int var1;
	int var2;
	unsigned int erg1;
	unsigned int erg2;

	cout &lt;&lt; &quot;Funktion squareMe, geben sie jeweils zwei Paramter ein&quot; &lt;&lt; endl;
	cin &gt;&gt; var1;
	cin &gt;&gt; var2;
	squareMe(var1, var2, erg1, erg2);
	cout &lt;&lt; var1 &lt;&lt; &quot;\n&quot; &lt;&lt; var2 &lt;&lt; endl;
	cout &lt;&lt; erg1 &lt;&lt; &quot;\n&quot;  &lt;&lt; erg2 &lt;&lt; endl;

	float var11;
	float p_var11;
	float var22;
	float p_var22;

	cout &lt;&lt; &quot;Funktion halfMe, geben sie jeweils zwei Paramter ein&quot; &lt;&lt; endl;
	cin &gt;&gt; var11;
	cin &gt;&gt; var22;
	halfMe(var11, &amp;p_var11, var22, &amp;p_var22);
	cout &lt;&lt; p_var11 &lt;&lt; endl;
	cout &lt;&lt; p_var22 &lt;&lt; endl;

	cout &lt;&lt; &quot;Funktion halfMe, geben sie jeweils zwei Paramter ein&quot; &lt;&lt; endl;

	system(&quot;pause&quot;);
	return 0;
}

int squareMe(int var1, int var2, unsigned int &amp;erg1,unsigned int &amp;erg2)
{

	erg1 = var1 * var1;
	erg2 = var2 * var2;

	return 0;
} 

float halfMe(float var11, float *p_var11, float var22, float *p_var22)
{
	*p_var11 = var11 / 2;
	*p_var22 = var22 / 2;
	return 0;
}

double  negateMe()
{

	return 0;
}
</code></pre>
<p>Wie zum Teufel soll ich die Funktion mit zwei Referenzen laut Aufgabenstellung zusammen wurschteln?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2505733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2505733</guid><dc:creator><![CDATA[daca]]></dc:creator><pubDate>Wed, 17 Aug 2016 21:47:17 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Referenzen, oder wie ich den Kampf verloren habe. on Wed, 17 Aug 2016 21:57:30 GMT]]></title><description><![CDATA[<p>Laut Aufgabenstellung haben alle Funktionen zwei Parameter. Bei dir sind es in zwei Fällen vier, einmal keine.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2505735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2505735</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 17 Aug 2016 21:57:30 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Referenzen, oder wie ich den Kampf verloren habe. on Wed, 17 Aug 2016 22:05:25 GMT]]></title><description><![CDATA[<p>Mein Loesungsvorschlag ist folgender:</p>
<pre><code>std::pair&lt;int,int&gt; squareMe(int a, int b)                                                                               
{                                                                                                                       
    return { a * a, b * b };  // Vielleicht etwas einfacher: return std::make_pair(a * a, b * b);                                                                                
}                                                                                                                       

int halfMe(float *a, float *b)                                                                                          
{                                                                                                                       
    *a /= 2.0;  // Aequivalent: *a = *a / 2.0                                                                                           
    *b /= 2.0;                                                                                                          
    return 0;                                                                                                           
}                                                                                                                       

int negateMe(double &amp;a, double &amp;b)                                                                                      
{                                                                                                                       
    a = -a;                                                                                                             
    b = -b;                                                                                                             
    return 0;                                                                                                           
}                                                                                                                       

int main()                                                                                                              
{                                                                                                                       
    cout &lt;&lt; &quot;Aufgabe 1\n&quot;;                                                                                              
    int a = 2;                                                                                                          
    int b = 3;                                                                                                          
    auto p = squareMe(2, 3);                                                                                            
    cout &lt;&lt; &quot;a = &quot; &lt;&lt; a &lt;&lt; '\n';                                                                                        
    cout &lt;&lt; &quot;b = &quot; &lt;&lt; b &lt;&lt; '\n';                                                                                        
    cout &lt;&lt; &quot;a * a = &quot; &lt;&lt; p.first &lt;&lt; '\n';                                                                              
    cout &lt;&lt; &quot;b * b = &quot; &lt;&lt; p.second &lt;&lt; '\n';                                                                             

    cout &lt;&lt; &quot;\nAufgabe 2\n&quot;;                                                                                            
    float x = 8.4;                                                                                                      
    float y = 4.4;                                                                                                      
    halfMe(&amp;x, &amp;y);                                                                                                     
    cout &lt;&lt; &quot;x = &quot; &lt;&lt; x &lt;&lt; '\n';                                                                                        
    cout &lt;&lt; &quot;y = &quot; &lt;&lt; y &lt;&lt; '\n';                                                                                        

    cout &lt;&lt; &quot;\nAufgabe 3\n&quot;;                                                                                            
    double u = 3.4;                                                                                                     
    double v = 8.3;                                                                                                     
    negateMe(u, v);                                                                                                     
    cout &lt;&lt; &quot;u = &quot; &lt;&lt; u &lt;&lt; '\n';                                                                                        
    cout &lt;&lt; &quot;v = &quot; &lt;&lt; v &lt;&lt; '\n';                                                                                        
}
</code></pre>
<p>Falls dir der Code unklar ist, dann frag einfach nach <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/2505737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2505737</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Wed, 17 Aug 2016 22:05:25 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Referenzen, oder wie ich den Kampf verloren habe. on Wed, 17 Aug 2016 22:19:16 GMT]]></title><description><![CDATA[<p>Super gemacht, jetzt ist er schon durchgefallen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2505739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2505739</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 17 Aug 2016 22:19:16 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Referenzen, oder wie ich den Kampf verloren habe. on Wed, 17 Aug 2016 22:52:22 GMT]]></title><description><![CDATA[<p>Zur Aufgabenstellung ansich: ich finde es positiv, dass globale Variablen verboten sind und die Funktionen selbst kein cout enthalten sollen.</p>
<p>Aber auch negativ: ich verstehe die Funktionssignaturen nicht!</p>
<p>Warum soll squareMe 2 Parameter nehmen und nicht einen? Strenggenommen wiederholt man ja den Berechnungscode für beide Parameter sogar, wenn man beide quadriert. Es ergibt für mich wenig Sinn, hier beide Werte zu quadrieren und dann beide zurückzugeben.</p>
<p>Dieselbe Frage stelle ich mir auch für halfMe und negateMe. Warum haben die nicht nur einen Parameter? Und dann diese idiotischen Rückgabetypen. Wenn eine Funktion eh immer 0 returnen soll, warum dann nicht gleich gar nichts (void) als Rückgabetyp wählen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2505741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2505741</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Wed, 17 Aug 2016 22:52:22 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Referenzen, oder wie ich den Kampf verloren habe. on Thu, 18 Aug 2016 07:21:31 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Super gemacht, jetzt ist er schon durchgefallen.</p>
</blockquote>
<p>hast Recht. icarus2 hat die Aufgabenstellung nicht genau genug gelesen.</p>
<p>In der Aufgabenstelleung heißt es doch ganz klar: &quot;.. zwei Parameter, diese sind Pointer ..&quot; und &quot;.. werden beide Parameter in ihrem Wert halbiert&quot;<br />
Die richtige Lösung für Aufgabe 2 ist:</p>
<pre><code>// die zweite Funktion heißt 'halfMe'
// sie besitzt zwei Parameter, diese sind Pointer vom Typ float
//      -&gt; es gibt keine Pointer vom Typ float; gemeint ist sicher &quot;.. vom Typ Pointer auf float&quot;
// die Funktion gibt immer den Wert 0 zurück;
//      -&gt; damit liegt die Signatur fest:
int halfMe(float* param1, float* param2);
// In der Funktion werden beide Parameter in ihrem Wert halbiert
//      -&gt; mehr steht da nicht, also ist die Implementierung auch klar
int halfMe(float* param1, float* param2)
{
    // .. beim Halbieren von Pointern muss Gewalt angewendet werden:
    static_assert(sizeof(void*) == sizeof(std::uint32_t), &quot;int size muss gleich Pointer size sein&quot;);
    reinterpret_cast&lt;std::uint32_t&amp;&gt;(param1) /=2;
    reinterpret_cast&lt;std::uint32_t&amp;&gt;(param2) /=2;
    return 0;
}

// die Funktion wird in der main-Funktion aufgerufen und die veränderten Werte ausgegeben:
#include &lt;iostream&gt;

int main()
{
    using namespace std;
    float a=56.1f;
    float b=0.f;
    halfMe(&amp;a, &amp;b);
    // ..  und die veränderten Werte ausgegeben (!?)
    auto param1=&amp;a;
    auto param2=&amp;b;
    cout &lt;&lt; reinterpret_cast&lt;std::uint32_t&gt;(param1 )/2 &lt;&lt; &quot; &quot; &lt;&lt; reinterpret_cast&lt;std::uint32_t&gt;(param2)/2 &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Tipp: wechsele die Schule.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2505759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2505759</guid><dc:creator><![CDATA[Kenner der Klausur]]></dc:creator><pubDate>Thu, 18 Aug 2016 07:21:31 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Referenzen, oder wie ich den Kampf verloren habe. on Thu, 18 Aug 2016 08:57:27 GMT]]></title><description><![CDATA[<p>wob schrieb:</p>
<blockquote>
<p>blablabla...</p>
</blockquote>
<p>Wayne?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2505765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2505765</guid><dc:creator><![CDATA[_Wayne]]></dc:creator><pubDate>Thu, 18 Aug 2016 08:57:27 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Referenzen, oder wie ich den Kampf verloren habe. on Thu, 18 Aug 2016 13:13:29 GMT]]></title><description><![CDATA[<p>wob schrieb:</p>
<blockquote>
<p>Zur Aufgabenstellung ansich: ich finde es positiv, dass globale Variablen verboten sind und die Funktionen selbst kein cout enthalten sollen.</p>
</blockquote>
<p>sonst kann man sich ja auch wunderbar um die verwendung von zeigern und referenzen herumdrücken.</p>
<blockquote>
<p>Warum soll squareMe 2 Parameter nehmen und nicht einen?</p>
<p>Dieselbe Frage stelle ich mir auch für halfMe und negateMe. Warum haben die nicht nur einen Parameter? Und dann diese idiotischen Rückgabetypen. Wenn eine Funktion eh immer 0 returnen soll, warum dann nicht gleich gar nichts (void) als Rückgabetyp wählen?</p>
</blockquote>
<p>das sind theoretische aufgaben, mit denen abgefragt werden soll, ob man das prinzip verstanden hat.</p>
<p>ps: ich würde als rückgabetyp für aufgabe 1 ein long long int verwenden und die beiden werte dann einfach da reinschieben. <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/2505792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2505792</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Thu, 18 Aug 2016 13:13:29 GMT</pubDate></item></channel></rss>