It's completely different types.
var is float*, so if you dereference is, you get float. Yet radius is float, so if you take its address, you get float*, and assigning float* to float doesn't work, unless you do a cast.
However, an array (1D ONLY!) is automatically converted to a pointer when you pass it to a function requiring a pointer.
So array becomes int* and the function wants int*, so it's fine.