what exaclty u meant by compile time constant ?
A compile time constant in C is essentially a literal value. 123, 5.6, and "test" are all compile time constants when placed in code, but any variable (even a const qualified variable) is not.
secondly, again i want to ask will you explain further when memory is allocated for variables ?
The times differ depending on where the variable is declared and how memory is being allocated. You can typically divide things into three different times:
Static data resides in the executable and is allocated when the process is loaded into memory.
Local variables are stored on the stack. The stack itself is allocated in toto when the process is loaded, but individual variables are doled out from the stack as they're reached during execution. There are details where some compilers differ, as Ancient Dragon mentioned, but you really don't need to concern yourself with that just yet.
Dynamic data, such as that returned by malloc(), will be allocated on request.