按作用域,C语言一般分为全局变量和局部变量。全局变量一旦声明就被默认初始化为适当类型的0,而局部变量被声明的时候其值是不可预料的,所以为了后续程序的正常使用,最好将其认为地初始化,否则有时会有灾难性的后果!
第二个问题,例如:
int main()
{
char a;//没有被初始化,可以在后面初始化,一般没危险性
char *p = &a;// 已初始化,指针p被赋予变量a的地址
char *q;//没有被初始化,相当危险!因为指针q是局部变量,此时的值是不确定,可能指向系统的重要数据,一旦在此变量被初始化前遇到类似下面的语句,就危险了:
q = &a;
}