I can’t think of any practical use of multiple asterisks in the function call:
void foo(int a, char b)
{
}
int main(void)
{
(**************foo)(45, 'c');
//or with pointer to function:
void (*ptr)(int, char) = foo;
(******ptr)(32, 'a');
}
Why is this thing allowed both in C and C++?
I can’t speak for C++, but for C at least a function designator is converted to a pointer:
Applying the indirection operator yields a function designator:
So no matter how many times you apply the indirection operator you’ll get the same thing: a function designator that’s immediately converted to a pointer.
In my opinion there’s little or no use in doing this.