Question: How can I create a "function pointer" (and (for example) the function has parameters) in C?

Answer: 
```
    typedef int (*funcptr)(int a, float b);

    funcptr x = some_func;

    int a = 3;
    float b = 4.3;
    x(a, b);

```
First declare a function pointer:

```
typedef int (*Pfunct)(int x, int y);

```

Almost the same as a function prototype.  

But now all you've created is a type of function pointer (with `typedef`).  

So now you create a function pointer of that type:

```
Pfunct myFunction;
Pfunct myFunction2;

```

Now assign function addresses to those, and you can use them like they're functions:

```
int add(int a, int b){
    return a + b;
}

int subtract(int a, int b){
    return a - b;
}

. . .

myFunction = add;
myFunction2 = subtract;

. . .

int a = 4;
int b = 6;

printf("%d\n", myFunction(a, myFunction2(b, a)));

```

Function pointers are great fun.