Hallo!
Ich wende mich mit einer Verständnisfrage an euch.
Habe irgendwann mal irgendwo gelesen, dass der Unterschied zwischen
1 | void MeineFunktion(void)
|
2 | {
|
3 | ...
|
4 |
|
5 | return;
|
6 | }
|
und
1 | void MeineFunktion()
|
2 | {
|
3 | ...
|
4 |
|
5 | return;
|
6 | }
|
der ist, dass bei
1 | void MeineFunktion(void)
|
überprüft wird, dass der Funktion keine(!) Parameter übergeben werden.
Im Umkehrschluss müsste es ja möglich sein die deklararierte &
definierte Funktion:
z.B. so aufzurufen:
1 | MeineFunktion(1,2,3, &test);
|
Falls das möglich ist, kann ich dann in einen Funktionspointer des Typs:
, jede belieben Funktionspointer hinterlegen, also auch eine Funktion,
die Übergabeparameter hat?
Entscheidend ist hier für mich die Frage, ob ich dann bei
Funktionsaufruf dennoch Parameter übergeben kann.
Bsp:
1 | typedef void(*)() FuncPointer;
|
2 | typedef void(*)(void) FuncPointerVoid;
|
3 |
|
4 | FuncPointer funcPtr;
|
5 |
|
6 | int main()
|
7 | {
|
8 | funcPtr = (FuncPointer)&Addition;
|
9 | //FuncPointerVoid = (FuncPointerVoid)&Addition; /* dürfte nicht gehen, oder?? */
|
10 | Berechne(2,3);
|
11 |
|
12 | return 0;
|
13 | }
|
14 |
|
15 | void Addition(int a, int* b, int* c)
|
16 | {
|
17 | *c = a + *b;
|
18 |
|
19 | return;
|
20 | }
|
21 |
|
22 | void Berechne(int a, int b)
|
23 | {
|
24 | int result;
|
25 |
|
26 | funcPtr(a, &b, &result);
|
27 |
|
28 | printf("Ergebnis: %i", result);
|
29 |
|
30 | return;
|
31 | }
|
Danke für die Hilfe.
Gruß
Philipp