I do not think that is quite right. My reasoning is because the following program will display the number three just fine. Compiler doesn't show any warnings and it executes perfectly and displays the number, even though I am initilizing it without pointing to an existing variable.
int main()
{
int *x = (int *)3;
printf("%d\n", x);
return 0;
}