No…
In one file, say a .h
extern int y; // declaration no memory allocated
In another file, usually the associated .cpp
int y; // definition memory allocated no initialization
With possibly later in a function
y = 42; // assignment
Or
int y = 42; // definition memory allocated with initialization