#define is an instruction to the preprocessor. The preprocessor runs before the compiler.
#define x 4 tells the preprocessor to go through the text file containing this line and physically replace the character x with the character 4. By the time the compiler gets to look at the text file, it has been done and the compiler never sees x, only 4. No such object as x is ever created. It does not exist. Note that this will not replace x where x is part of some larger token (i.e. x becomes 4, and x(x) becomes 4(4), but xx stays as xx).
You can get your preprocessor to display its output, to see what it's doing.
You'd get the same effect with doing a search and replace in your text editor, bearing in mind the rules mentioned above. There are more complicated #define statements that are a bit more complicated, but this is a simple one.
int x = 4; is C++ code. It creates an integer, named x, and assigns the value 4 to it.
i think that if we define x to 4 by #define x 4
here we can't change the value of x as its made constant but by int x=4;
wecan change the value of x any time