Variable types with * prefix

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