So far i know you can not declare or use a "define" macro in a function like this.
But as per as scope of variable concern, here "variable" has declared as local variable, so no mater from where the value has been passed, you can not use the "varaible" out side this function. But as it is a pointer type variable, that means, if you change any value to the address to which this pointer is pointing, it will effect that int, where that int has been declared. ( ex varaible = 10 it will change the original arrays which u have passed to this funtion).
If all these are confusing.. sorry for that, but if u have any question dont hesitate to ask.