It's a definition; memory is allocated. Below is a variable declaration
extern int y;
No memory is allocated; it's your responsibility to allocate it (read: create a variable of the same type with the same name) elsewhere.
See e.g. Difference between Definition and Declaration - GeeksforGeeks