Archiv verlassen und diese Seite im Standarddesign anzeigen : funktionszeiger im array
hi,
ist es möglich einen array von anzulegen?
und wie rufe ich die funktionen dann auf?
void fkt[10]]; ... das wären dann meine funktionszeiger
void kommen()
{
... printf("kommen\n");
}
void gehen()
{
... printf("gehen\n");
}
int main()
{
... fkt[0] = kommen;
... fkt[1] = gehen
... for( i=0; i<2; i++)
... /* hier nun machen und gehen aufrufen */
... return 0;
}
nach dem aufruf vom programm, sollte zu sehen sein:
kommen
gehen
anda_skoa
21-01-2003, 18:38
Ich kenn mich mit Funktionspointern zu wenig aus (dafür hab ich virtuelle Methoden :)), aber ich denke du musst schon ein Array von pointern deklarieren, damit das klappt.
Also
void* fkt[10];
Aufruf
fkt[i]();
Ciao,
_
hallo
vieleicht so:
void (*(fkt[2]))={kommen,gehen};
aufrufen dann so:
(*(fkt[0]));
oder eben
(*(fkt[1]));
gruß
input:
# include < stdio.h >
# include < stdlib.h >
typedef void (*FUNKTION)();
FUNKTION fkt[3];
void kommen()
{
printf("--- kommen --- \n");
}
void hallo()
{
printf("--- hallo ---\n");
}
void gehen()
{
printf("--- gehen ---\n");
}
void mache( FUNKTION F)
{
f();
}
int main()
{
int i;
fkt[0] = kommen;
fkt[1] = hallo;
fkt[2] = gehen;
for( i=0; i<3; i++)
mache( fkt[i]);
return 0;
}
output:
--- kommen ---
--- hallo ---
--- gehen ---
geil, oder ;) ?
Hm, nein wird so nicht funktionieren, weil sich der Linker mit "undefined reference to `f' " verabschieden wird. Der Compiler wird sich wahrscheinlich an den ersten beiden Zeilen stören, weil Du Leerzeichen eingebaut hast.
#include <stdio.h>
#include <stdlib.h>
typedef void (*FUNKTION)();
FUNKTION fkt[3];
void kommen()
{
printf("--- kommen --- \n");
}
void hallo()
{
printf("--- hallo ---\n");
}
void gehen()
{
printf("--- gehen ---\n");
}
void mache( FUNKTION f)
{
f();
}
int main()
{
int i;
fkt[0] = kommen;
fkt[1] = hallo;
fkt[2] = gehen;
for( i=0; i<3; i++)
mache( fkt[i]);
return 0;
}
hi,
gut beobachtet & danke :)
das mit den leerzeichen bei den include's war nur,
weil ich nicht wusste ob das hier als html dargestellt wird oder nicht,
wollte nur auf nummer sicher gehen ...
das mit dem großen F war nur ein schreibfehler ....
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.