Question: I have two functions that uses indirect operator `*` and need to call the second function from the first function and pass the parameters given to the first function and dubious about if I must to use `*` or `&` to pass the buffer address.

```
char Func1(short Enable, char Event, char *BufferX)
{
    char xResult;

    xResult=Func2(Event, ?BufferX);//* or &
    return xResult;
}

char Func2(char Event, char *BufferX)
{

}

```

The code is C for microcontrollers, not standard C.

Answer: 
let `var` be a pointer..

`*var` means value the pointer refers..

`&var` means the address of the variable var(No matter it is a pointer)

so in this case you need to pass only the variable.

```
xResult=Func2(Event, BufferX);

```

Its because Func2 is asking for a pointer in its second argument. (Not a value, not a address to a pointer.. )
`Func2` wants an argument of type `char*`. The type of `BufferX` is already `char*`.

Thus you can just pass `BufferX` straight to `Func2`:

```
xResult = Func2(Event, BufferX);

```

`&BufferX` would give you the address of `BufferX`, of type `char**`, while `*BufferX` would give you the thing that `BufferX` points to, i.e. a `char`.