<?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 Funktionsaufruf unklar]]></title><description><![CDATA[<p>Neuer Tag, neue Aufgabe, neues Problem. Dieser Code ist nicht besonders schwer, doch ich habe Probleme mit der Ausgabe bzw ich verstehe es nicht.</p>
<pre><code># include&lt;iostream&gt;
using namespace std;

int f1(int (*) (int), int);
int f2(int);
int f3(int);

int main()
{cout&lt;&lt; f1( f2, 5) &lt;&lt;endl;
cout&lt;&lt; f1( f3, 5) &lt;&lt;endl;
system(&quot;pause&quot;);
return 0;
}

int f1(int (*pf) (int k), int n)

{	int s=0;
	for(int i=1; i&lt;=n; i ++)
	s+= ( *pf) (i); // s=s +((*pf)
	return s;
}

int f2( int k)
{
return k*k;
}

int f3 (int k)
{
return k*k*k;
}
</code></pre>
<p>Ausgabe :</p>
<pre><code>55
225
</code></pre>
<p>Was genau passiert an dieser Stelle ?</p>
<pre><code>s+= ( *pf) (i);
</code></pre>
<p>Mein Ansatz: der Pointer greift auf k zu aus den Funktionen f2 und f3. Und umformuliert steht da : s= s+((*pf) (i)), aber kein &quot;mal&quot; zeichen zwischen den beiden. Deshalb meine Frage welche operation findet zwischen (*pf)(i) statt ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/317974/pointer-funktionsaufruf-unklar</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 22:52:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317974.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Jun 2013 13:56:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer Funktionsaufruf unklar on Wed, 26 Jun 2013 13:56:59 GMT]]></title><description><![CDATA[<p>Neuer Tag, neue Aufgabe, neues Problem. Dieser Code ist nicht besonders schwer, doch ich habe Probleme mit der Ausgabe bzw ich verstehe es nicht.</p>
<pre><code># include&lt;iostream&gt;
using namespace std;

int f1(int (*) (int), int);
int f2(int);
int f3(int);

int main()
{cout&lt;&lt; f1( f2, 5) &lt;&lt;endl;
cout&lt;&lt; f1( f3, 5) &lt;&lt;endl;
system(&quot;pause&quot;);
return 0;
}

int f1(int (*pf) (int k), int n)

{	int s=0;
	for(int i=1; i&lt;=n; i ++)
	s+= ( *pf) (i); // s=s +((*pf)
	return s;
}

int f2( int k)
{
return k*k;
}

int f3 (int k)
{
return k*k*k;
}
</code></pre>
<p>Ausgabe :</p>
<pre><code>55
225
</code></pre>
<p>Was genau passiert an dieser Stelle ?</p>
<pre><code>s+= ( *pf) (i);
</code></pre>
<p>Mein Ansatz: der Pointer greift auf k zu aus den Funktionen f2 und f3. Und umformuliert steht da : s= s+((*pf) (i)), aber kein &quot;mal&quot; zeichen zwischen den beiden. Deshalb meine Frage welche operation findet zwischen (*pf)(i) statt ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334534</guid><dc:creator><![CDATA[coc1948]]></dc:creator><pubDate>Wed, 26 Jun 2013 13:56:59 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Funktionsaufruf unklar on Wed, 26 Jun 2013 14:08:54 GMT]]></title><description><![CDATA[<p>Der Funktionszeiger wird dereferenziert und die Funktion, auf die der Zeiger zeigt (also gewissermaßen der Pointee), wird aufgerufen. Du könntest die Dereferenzierung auch weglassen, dann stünde da</p>
<pre><code>s+= pf(i);
</code></pre>
<p>Ist es jetzt klar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334538</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 26 Jun 2013 14:08:54 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Funktionsaufruf unklar on Wed, 26 Jun 2013 14:59:07 GMT]]></title><description><![CDATA[<p>nicht so wirklich :S ich erkenne den nutzen der Variablen (i) nicht ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334551</guid><dc:creator><![CDATA[coc1948]]></dc:creator><pubDate>Wed, 26 Jun 2013 14:59:07 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Funktionsaufruf unklar on Wed, 26 Jun 2013 15:03:44 GMT]]></title><description><![CDATA[<p>vatan89 schrieb:</p>
<blockquote>
<p>nicht so wirklich :S ich erkenne den nutzen der Variablen (i) nicht ?</p>
</blockquote>
<p>i ist das Argument für die Funktionen f2 und f3. Immerhin wollen die beiden ein int, dann muss da auch ein int reingesteckt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334553</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 26 Jun 2013 15:03:44 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Funktionsaufruf unklar on Wed, 26 Jun 2013 15:14:44 GMT]]></title><description><![CDATA[<p>ok jetzt habe ich es. Mich irritieren immer diese Variablennamen. Z.b. steht int k als Parameter bei f2 und f3. Und ich wusste auch nicht dass man in dieser Form (*pf)(i) werte dem Pointer mitgibt.</p>
<p>da steht eigentlich nichts anderes wie die Summe aus i*i</p>
<p>1*1 + 2*2+3*3+4*4+5*5 = 55</p>
<p>i*i*i</p>
<p>1*1*1+2*2*2+....= 225</p>
<p>danke für eure 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/2334559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334559</guid><dc:creator><![CDATA[coc1948]]></dc:creator><pubDate>Wed, 26 Jun 2013 15:14:44 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Funktionsaufruf unklar on Wed, 26 Jun 2013 15:32:17 GMT]]></title><description><![CDATA[<p>vatan89 schrieb:</p>
<blockquote>
<p>Mich irritieren immer diese Variablennamen.</p>
</blockquote>
<p>Wer in realen Programmen solche Variablennamen nutzt, gehört vor die Tür gesetzt.</p>
<p>vatan89 schrieb:</p>
<blockquote>
<p>Und ich wusste auch nicht dass man in dieser Form (*pf)(i) werte dem Pointer mitgibt.</p>
</blockquote>
<p>Du gibst nicht den Pointer mit.</p>
<p>Nehmen wir mal ein einfaches Beispiel:</p>
<pre><code>int i = 4;
int pi = &amp;i; // in pi steht nun die Speicheradresse von pi.
// pi  = Speicheradresse
// *pi = Dereferenzierter Zeiger =&gt; Wert auf den die Speicheradresse zeigt, hier 4
</code></pre>
<p>Nun gehen wir ein Stück weiter, und wenden dieses wissen auf Funktionszeiger an:</p>
<pre><code>int f2(int k)    // Funktion die ein int als Parameter annimmt, und einen int
{                // zurückgibt... dies solltes du inzwischen verstanden haben nach
    return k*k;  // den ewigen Threads
}

int main() {
    int (*pf)(int /*k*/); // &lt;-- Funktionszeiger namens pf, der auf eine
                          //     Funktion zeigen kann, die ein int annimmt und
                          //     int zurückliefert.
    pf = &amp;foo;            // pf enthält nun die Speicheradresse der Funktion foo
    // pf =&gt; Speicheradresse
    // *pf =&gt; Funktion auf den die Speicheradresse zeigt

    // Aufruf geht nun in 2 Formen:
    (*pf)(1); // foo mit Argument 1 aufrufen.
    pf(1);    // foo mit Argument 1 aufrufen.
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2334562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334562</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 26 Jun 2013 15:32:17 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Funktionsaufruf unklar on Wed, 26 Jun 2013 21:24:15 GMT]]></title><description><![CDATA[<p>Eyy so viele Threads sind's garnich <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>
<p>Danke für die ausführliche Erklärung, hat gut geholfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334675</guid><dc:creator><![CDATA[coc1948]]></dc:creator><pubDate>Wed, 26 Jun 2013 21:24:15 GMT</pubDate></item></channel></rss>