Will arr and func_ptr will be global scope allocated for each .c file ?
Yes it will, and you will end up with a linking error since you have defined the same variable names several places at global scope.
Header files you #include in your .c files are just inserted into your .c file, there's nothing special about them. It works just as you concatenated all the header files your .c file includes, and then compile the result.
In that respect, the net result is exactly as if you wrote int arr[128];
in each of your .c file