Are these syntax just equivalent?

I have a function pointer in my program like so:

void (*ptrFunction)();

void callPtrFunc(){
     ptrFunction();
}

The call function gets called every loop and whatever function is registered there gets called. Basic callback style programming. And it works just fine.

But I noticed in some of my code that I had registered the function two different ways and both were working. Are these equivalent? Or am I missing something deeper that allowed it to work but might have backfired later? Which one is better?

ptrFunction = someFunction;

  //  or  //

ptrFunction = &someFunction;

It "appears" to work with or without the &, but I know how things can sometimes "appear" to work until you add the next bit of code.

The name of the function is the address of the function; the & is superfluous.

They are equivalent. Arguably, adding the & makes it more clear, but they are functionally the same.

Regards, Ray L.

Cool. That's what I thought, but I wanted to make sure.