equal
deleted
inserted
replaced
1 /** |
1 /** |
2 * function_pointers.c |
2 * function_pointers.c |
3 * Copyright (C) 2008 Markus Broeker |
|
4 */ |
3 */ |
5 |
4 |
6 #include <stdio.h> |
5 #include <stdio.h> |
7 #include <stdlib.h> |
6 #include <stdlib.h> |
8 |
7 |
9 typedef struct T { |
8 int plus (int a, int b) |
10 int a; |
|
11 int b; |
|
12 } T; |
|
13 |
|
14 int plus (T t) |
|
15 { |
9 { |
16 return t.a + t.b; |
10 return a + b; |
17 } |
11 } |
18 |
12 |
19 int minus (T t) |
13 int minus (int a, int b) |
20 { |
14 { |
21 return t.a - t.b; |
15 return a - b; |
22 } |
16 } |
23 |
17 |
24 int func (T t, int (*ptrFunc) (T)) |
18 int func (int (*ptrFunc) (int, int), int a, int b) |
25 { |
19 { |
26 return ptrFunc (t); |
20 return ptrFunc (a, b); |
27 } |
21 } |
28 |
22 |
29 int main (int argc, char **argv) |
23 int main (int argc, char **argv) |
30 { |
24 { |
31 T t = { |
25 printf ("Result: %d\n", func (&plus, 10, 20)); |
32 .a = 20, |
26 printf ("Result: %d\n", func (&minus, 10, 20)); |
33 .b = 10 |
|
34 }; |
|
35 |
|
36 printf ("Result: %d\n", func (t, &plus)); |
|
37 printf ("Result: %d\n", func (t, &minus)); |
|
38 |
27 |
39 return EXIT_SUCCESS; |
28 return EXIT_SUCCESS; |
40 } |
29 } |