"Pointers make my head spin" etc ...

I am coming at this from a very basic position. Have a look at this snippet (I hope my syntax is correct)

byte myArray[1];
myArray[0] = 5;

byte myVar = 5;

In both cases there is a memory location at an address and it contains the number 5.

If I want to use this function call
bool RF24::write( const void * buf, uint8_t len)
I can do it like this

myRF24.write(myArray, 1);

or

myRF24.write(&myVar, 1);

(again I hope I have the syntax correct - I have only used the other version)

I cannot for the life of me see why C/C++ was designed in such a way that these things need to be treated differently.

...R