<?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[Frage zu Zeiger Funktion]]></title><description><![CDATA[<p>Hallo hier wird bei mir immer 124500 ausgeben: ret = sum ( cubed ( v ) ) ;</p>
<p>Kann man überhaupt den Wert 100 ausgeben lassen wenn ich die Zeiger Funktion als Parameter an die Funktion sum übergebe?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int *cubed( int );
int sum( int *pfun );

int main()
{

int ret;
int v = 100;

ret = sum ( &amp;v );  // gibt 100 aus
cout&lt;&lt; ret &lt;&lt;endl;

ret = sum ( cubed ( v ) ) ;  // gibt 124500 aus
cout&lt;&lt; ret &lt;&lt;endl;

 system(&quot;PAUSE&quot;);

}

int sum( int *pfun )
{
	cout&lt;&lt;&quot;pfun: &quot; &lt;&lt; *pfun &lt;&lt; endl; // gibt 124500 aus
	return *pfun;
}

int *cubed(int x)
{
cout&lt;&lt;&quot;cubed: &quot; &lt;&lt; x &lt;&lt; endl;  // gibt 100 aus
 return &amp;x;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/271843/frage-zu-zeiger-funktion</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 05:20:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271843.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Aug 2010 19:16:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Zeiger Funktion on Wed, 04 Aug 2010 19:16:27 GMT]]></title><description><![CDATA[<p>Hallo hier wird bei mir immer 124500 ausgeben: ret = sum ( cubed ( v ) ) ;</p>
<p>Kann man überhaupt den Wert 100 ausgeben lassen wenn ich die Zeiger Funktion als Parameter an die Funktion sum übergebe?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int *cubed( int );
int sum( int *pfun );

int main()
{

int ret;
int v = 100;

ret = sum ( &amp;v );  // gibt 100 aus
cout&lt;&lt; ret &lt;&lt;endl;

ret = sum ( cubed ( v ) ) ;  // gibt 124500 aus
cout&lt;&lt; ret &lt;&lt;endl;

 system(&quot;PAUSE&quot;);

}

int sum( int *pfun )
{
	cout&lt;&lt;&quot;pfun: &quot; &lt;&lt; *pfun &lt;&lt; endl; // gibt 124500 aus
	return *pfun;
}

int *cubed(int x)
{
cout&lt;&lt;&quot;cubed: &quot; &lt;&lt; x &lt;&lt; endl;  // gibt 100 aus
 return &amp;x;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1936286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936286</guid><dc:creator><![CDATA[bob!]]></dc:creator><pubDate>Wed, 04 Aug 2010 19:16:27 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Zeiger Funktion on Wed, 04 Aug 2010 19:38:32 GMT]]></title><description><![CDATA[<p>Herzlichen Glückwunsch! Sie haben ein Programm mit &quot;undefiniertem Verhalten&quot;:</p>
<pre><code class="language-cpp">int *cubed(int x)
{
  cout&lt;&lt;&quot;cubed: &quot; &lt;&lt; x &lt;&lt; endl;  // gibt 100 aus
  return &amp;x;
}
</code></pre>
<p>Nach Beendigen der Funktion, hört x (ist ja nur eine lokale auomatische Kopie) auf zu existieren und damit zeigt ist der zurückgegebene Zeiger <strong>ungültig</strong>.</p>
<p>Undefiniertes Verhalten --&gt; Du kannst überhaupt gar keine Aussage über das Programm machen. Es könnte Dir den Rechner explodieren lassen, eine Pizza bestellen, oder sonst was.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936307</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 04 Aug 2010 19:38:32 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Zeiger Funktion on Wed, 04 Aug 2010 19:58:58 GMT]]></title><description><![CDATA[<p>Aber wie macht man es dann richtig ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936316</guid><dc:creator><![CDATA[bob!]]></dc:creator><pubDate>Wed, 04 Aug 2010 19:58:58 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Zeiger Funktion on Wed, 04 Aug 2010 20:04:12 GMT]]></title><description><![CDATA[<p>Ich hab es jetzt so gemacht aber geht das nicht auch anders?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int *cubed(  int );
int sum( int *pfun );

int main()
{

int ret;
int v = 100;

ret = sum ( &amp;v );  // gibt 100 aus
cout&lt;&lt; ret &lt;&lt;endl;

ret = sum ( cubed ( v ) ) ;
cout&lt;&lt; ret &lt;&lt;endl; // gibt 100 aus

 system(&quot;PAUSE&quot;);

}

int sum( int *pfun )
{

	return *pfun;
}

int *cubed( int x)
{
static q;

q = x;

cout&lt;&lt;&quot;cubed: &quot; &lt;&lt; x &lt;&lt; endl;  // gibt 100 aus

 return &amp;q;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1936320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936320</guid><dc:creator><![CDATA[bob!]]></dc:creator><pubDate>Wed, 04 Aug 2010 20:04:12 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Zeiger Funktion on Wed, 04 Aug 2010 20:05:15 GMT]]></title><description><![CDATA[<p>bob! schrieb:</p>
<blockquote>
<p>Aber wie macht man es dann richtig ?</p>
</blockquote>
<p>Ohne weitere Infos über das, was Du eigentlich machen willst, hört sich diese Frage so an wie ein &quot;Wie schieße ich mir in den Fuß, ohne mir in den Fuß zu schießen?&quot;</p>
<p>k</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936321</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 04 Aug 2010 20:05:15 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Zeiger Funktion on Thu, 05 Aug 2010 07:40:41 GMT]]></title><description><![CDATA[<p>So würde ich es machen:</p>
<p>Habe keinen Compiler zur Hand, ich hoffe es compiled und tut so <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>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;math.h&gt; // gibts da auch einen ohne .h? cmath ist doch for c?
using namespace std;

vector&lt;int*&gt; garbage;

// entweder, nimm nen pointer, kopier dessen value in nen neuen pointer (garbageCollect nicht vergessen -&gt; jedes new braucht n delete) und return den neuen pointer
int* cubed1(int * x)
{
int * a = new int(*x);
garbage.push_back(a);

*a *= int(pow(*a,3));

cout&lt;&lt;&quot;cubed: &quot; &lt;&lt; a &lt;&lt; endl;   

 return a;
}

// oder nimm den pointer, veränder den Wert in place und return einen dereferenzierten pointer (d.h. intern mach ne kopie und returnier die)
int cubed2(int * x) 
{
*x = int(pow(*x,3));
cout&lt;&lt;&quot;cubed: &quot; &lt;&lt; *x &lt;&lt; endl;  
return *x;
}

// oder nimm ne ref, änder den Wert in place und return wieder ne Kopie ...
int cubed3(int &amp; x) 
{
x = int(pow(x,3));
cout&lt;&lt;&quot;cubed: &quot; &lt;&lt; x &lt;&lt; endl;  
return x;
}

int main()
{
  int ret;
  int v = 100;
  int * pV = &amp;v;

  cout &lt;&lt; cubed1(&amp;v) &lt;&lt; endl;

  cout &lt;&lt; cubed2(pV) &lt;&lt; endl;

  cout &lt;&lt; cubed3(v) &lt;&lt; endl;

  int s = garbage.size();
  for (int i=0;i &lt; s; --s) // mhh, geht das? 
  {
      delete garbage.end();
      garbage.pop_back();   
  }
system(&quot;PAUSE&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1936438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936438</guid><dc:creator><![CDATA[padreigh]]></dc:creator><pubDate>Thu, 05 Aug 2010 07:40:41 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Zeiger Funktion on Thu, 05 Aug 2010 08:27:37 GMT]]></title><description><![CDATA[<p>bob! schrieb:</p>
<blockquote>
<p>Hallo hier wird bei mir immer 124500 ausgeben: ret = sum ( cubed ( v ) ) ;</p>
<p>Kann man überhaupt den Wert 100 ausgeben lassen wenn ich die Zeiger Funktion als Parameter an die Funktion sum übergebe?</p>
</blockquote>
<p>Lass doch einfach mal den Optimierer laufen, dann kommt das dabei heraus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main( void )
{
   std:cout &lt;&lt; 100;

   return 0;
}
</code></pre>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936459</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Thu, 05 Aug 2010 08:27:37 GMT</pubDate></item></channel></rss>