Array is allocated memory like any other scalar type. If it is declared in global scope or with static keyword, it gets initialized to 0 as this happens only once in the program. If array is declared in local scope, its memory is allocated in local stack, and there is no implicit initialization as that would cause overhead for function calls.