<?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[verständnisfrage funktionspointer]]></title><description><![CDATA[<p>folgende aufgabenstellung:<br />
wir sollen mithilfe von tokens einen string aufteilen und berechnen abhängig vom trennoperator (123+456)!kein ding, hab die beiden zahlen ind token[0] und token[1] gespeichert und kann diese ja jetzt addieren!in der aufgabenstellung wird aber verlangt:</p>
<p>&quot;mit einem switch über den ASCII code des operator könnnen sie einem funktionpointer die passenden bearbeitungsfunktion zb int fplus(int,int) zuweisen und diese anschliessend ausführen!&quot;</p>
<p>wobei ich alles genauso gemacht hätte, via siwtch, einer funktion,etc...<br />
da ich vorher nie etwas von funktionspointern gehört habe (wohl schon von pointern)<br />
komme ich nicht dahinter, was der nutzen sein soll bzw wie das ganze überhaupt funktionieren soll?</p>
<p>wäre dankbar für jede hilfestellung!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182305/verständnisfrage-funktionspointer</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 17:22:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182305.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 May 2007 15:00:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to verständnisfrage funktionspointer on Wed, 23 May 2007 15:00:41 GMT]]></title><description><![CDATA[<p>folgende aufgabenstellung:<br />
wir sollen mithilfe von tokens einen string aufteilen und berechnen abhängig vom trennoperator (123+456)!kein ding, hab die beiden zahlen ind token[0] und token[1] gespeichert und kann diese ja jetzt addieren!in der aufgabenstellung wird aber verlangt:</p>
<p>&quot;mit einem switch über den ASCII code des operator könnnen sie einem funktionpointer die passenden bearbeitungsfunktion zb int fplus(int,int) zuweisen und diese anschliessend ausführen!&quot;</p>
<p>wobei ich alles genauso gemacht hätte, via siwtch, einer funktion,etc...<br />
da ich vorher nie etwas von funktionspointern gehört habe (wohl schon von pointern)<br />
komme ich nicht dahinter, was der nutzen sein soll bzw wie das ganze überhaupt funktionieren soll?</p>
<p>wäre dankbar für jede hilfestellung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1290800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1290800</guid><dc:creator><![CDATA[wanderameise]]></dc:creator><pubDate>Wed, 23 May 2007 15:00:41 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage funktionspointer on Wed, 23 May 2007 15:13:08 GMT]]></title><description><![CDATA[<p>ein Funktionspointer ist sowas wie ein Zeiger auf eine Variable, nur dass er auf eine Funktion zeigt.</p>
<p>Die Aufgabe ist also sozusagen:<br />
Erstelle eine Variable (funktionspointer) der auf eine Funktion zeigt. Die Funktion auf die er zeigt, soll abhängig sein vom opoerator in der mitte des ausdrucks 122+456. Funktionspointer definierst du so:</p>
<pre><code class="language-cpp">typedef RÜCKGABEWERT (*TYP)(ARGUMENTLISTE)

// besispiel, ein Zeiger auf eine Funktion die zwei ints als parameter hat und ein float zurückgibt:
typedef float (*ZeigerAufFloatIntInt)(int, int);

float MyFunction(int a, int b)
{
  return (float)a / b;
}

ZeigerAufFloatIntInt functionPointer = &amp;MyFunction;

// jetzt kannst du mit dem funktionspointer ganz normal umgehen wie mit einer funktion:
functionPointer(1,1); // ruft MyFunction(1,1) auf
</code></pre>
<p>Hoffe, konnte helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1290811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1290811</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Wed, 23 May 2007 15:13:08 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage funktionspointer on Wed, 23 May 2007 16:46:05 GMT]]></title><description><![CDATA[<p>die zuweisung wird bei uns im script etwas anderes beschrieben:</p>
<pre><code>void (*f_ptr)(int, char)=NULL;
void fkt(int a,char b)
{
tudiestudas
}

main
{

	f_ptr=fkt;
        f_ptr(c,d);	

}
</code></pre>
<p>unterscheidet sich zu deinem</p>
<pre><code>ZeigerAufFloatIntInt functionPointer = &amp;MyFunction;
</code></pre>
<p>wieso?<br />
und was soll dieses =NULL?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1290905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1290905</guid><dc:creator><![CDATA[wanderameise]]></dc:creator><pubDate>Wed, 23 May 2007 16:46:05 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage funktionspointer on Wed, 23 May 2007 16:51:12 GMT]]></title><description><![CDATA[<p>ich hab das ganze mit einem typedef gelöst.<br />
Du hast quasi sowas hier gemacht, im übertragenen sinne:</p>
<pre><code class="language-cpp">// Erstelle einen Zeiger auf ein Objekt
std::map&lt;std::string, std::vector&lt;std::string&gt; &gt;* mymap = NULL;

// und fülle zeiger
mymap = new std::map&lt;std::string, std::vector&lt;std::string&gt; &gt;;
</code></pre>
<p>meine version:</p>
<pre><code class="language-cpp">// erstelle neuen typ, der nicht so komplex aussieht.
typedef std::map&lt;std::string, std::vector&lt;std::string&gt; &gt; MyMapType;

// erstelle zeiger auf typ und fülle ihn
MyMapType* mymap = new MyMapType;
</code></pre>
<p>Ich hab also den Funktionspointer als typedef definiert, damit wird es durchsichtiger, weil man eien Typ so besser lesen kann als das<br />
void (*myfunctionpointer)(int, int);</p>
<p>Deshalb. Ansonsten hab ich das selbe gemacht. Das =NULL lässt deinen Funktionspointer f_ptr am Anfang auf nichts zeigen, ist eben guter standard zeiger erstmal mit NULL zu initialisieren, wenn sie nich gleich benutzt werden.</p>
<p>so, pizza essen <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="🙂"
    /><br />
Maxi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1290908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1290908</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Wed, 23 May 2007 16:51:12 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage funktionspointer on Wed, 23 May 2007 16:58:18 GMT]]></title><description><![CDATA[<p>ok den ersten teil muss ich nicht verstehen oder <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>also kann ich meinen code so auch verwenden?</p>
<p>guten hunger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1290914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1290914</guid><dc:creator><![CDATA[wanderameise]]></dc:creator><pubDate>Wed, 23 May 2007 16:58:18 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage funktionspointer on Wed, 23 May 2007 18:09:18 GMT]]></title><description><![CDATA[<p>ja kannst du <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/1290984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1290984</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Wed, 23 May 2007 18:09:18 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage funktionspointer on Wed, 23 May 2007 19:01:48 GMT]]></title><description><![CDATA[<p>und was genau sind jetzt die vorteile von funktionspointern?</p>
<p>und wie schaffe ich es jetzt, an diese funktion meinen char array, mit den gespeicherten tokens, weiterzugeben?</p>
<p>ich habe die beiden tokens von 123+456</p>
<pre><code>token[0] = strtok(string, separator);        
    token[1] = strtok(NULL, separator);
</code></pre>
<p>hier gespeichert und will durch ne switch/case anweisung die entsprechende fkt aufrufen</p>
<pre><code>switch(separator)
	{
	case '+':  f_plus(token); break;
		case '-':  f_minus(token);  break;
			case '/':  f_div(token); break;
				case '*':  f_mal(token);break;
				     default: printf(&quot;falscher operator&quot;);

	}
</code></pre>
<p>kann ich denn einfach so den token array weitergeben?bekomme nämliche eine fehlermeldung</p>
<p>deklaration</p>
<pre><code>void (*f_plus)(char[])=NULL;

void fkt(char[])
{
tudiestudas
}

main

{
f_plus=fkt;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1291006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291006</guid><dc:creator><![CDATA[wanderameise]]></dc:creator><pubDate>Wed, 23 May 2007 19:01:48 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage funktionspointer on Wed, 23 May 2007 19:44:47 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// deklaration von plus, minus, geteilt und multiplizieren-funktion
// alle mit signatur void fkt(char*)
int main()
{
  char separator;
  // ... separator irgendwie mit +, -, *, / befüllen

  // den funktionspointer erstellen
  void (*fktpointer)(char*);
  switch(separator)
  {
  case '+':
    fktpointer = &amp;FunktionFuerPlus;
    break;
  case '-':
    fktpointer = &amp;FktFuerMinus;
    break;
  // ...
  default:
    fktpointer = NULL;
  }

  // hier rufst du dann jetzt deine funktion auf, die du vorher berechnet hast.
  fktpointer(token);

  // Der vorteil davon ist jetzt, dass du an späterer Stelle im Programm 
  // die Funktion nochmal aufrufen kannst, ohne wieder die ellen
  // lange switch-anweisung zu haben.

  // mach noch was blalblabla

  // fjdkla fjdsaköl

  fktPointer(tokens);

  // Eine andere Anwendung ist auch, wenn du die selbe Funktion für mehrere
  // verschiedene Daten aufrufen willst, dann kannst du das mit funktions
  // pointern machen. Also du befüllst den pointer einmal mit der richtigen
  // funktion (ein switch) und rufst den pointer dann mit allen möglichen 
  // Daten auf.  
}
</code></pre>
<p>Gruß, Maxi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1291056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291056</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Wed, 23 May 2007 19:44:47 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage funktionspointer on Fri, 25 May 2007 02:19:05 GMT]]></title><description><![CDATA[<p>hast du eine idee wie man die beiden token so umwandeln kann, bzw ihre werte, das man sie anhand von funktionen übergeben kann?ich meine ich will ja mit den beiden token rechnen, aber momentan sind sie ja nicht als int sondern als char gespeichert!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1291871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291871</guid><dc:creator><![CDATA[wanderameise]]></dc:creator><pubDate>Fri, 25 May 2007 02:19:05 GMT</pubDate></item></channel></rss>