可能以前写的代码太少了,现在突然发现其实C语言变量的初始化也是一门不小的学问。其实很早之前我都天真的以为C语言会将变量自动初始化为0或'0'或NULL,但是在以后的编程我愈发发现,我真是太天真了。跟大家啰嗦一句,在C语言中,变量的第一次赋值,被称为变量的初始化。
首先我们来看C语言中最常用的普通变量,首先大家测试一下一下的代码:
int c;
printf("%d\n", c);
这是一顿很简单的代码,但是大家猜猜输出的是什么?猜0的兄弟,我估计你肯定不是专业写C,其实这个时候变量c是一个不确定的值。
说完这个之后咱们再说一下全局变量,测试代码如下:
int a, c[3];
int main(int argc, char *argv[]) {
printf("%d", a);
int i = 0;
for (i = 0; i < 0; i++) {
printf("%d\t", c[i]);
}
}
还有一个静态变量和常量,说起静态变量大家可以类比一下全局变量,他们都被存储在内存的静态区域中,性质都是差不多的。常量则是你必须要初始化的,想象一下,常量是不允许修改的,如果你定义常量而不赋值,意义何在。
说完上面的咱们再说一个非常重要的,那就是指针的初始化,为什么这个比较重要的,同样,测试过普通变量的同学都知道,如果定义一个变量而不初始化,这个变量的值是不确定的。这个时候如果是一个普通变量,就算是我们不小心用了没有这个初始化的变量也不过是造成你现在程序出现bug。但是如果是指针没有初始化,也就是我们经常说的野指针,这个结果相当的可怕,想象一下,如果你现在的指针正好指向你内存初始化地址,这个时候你赋值这个指针为NULL,运行一下。。。。。。
虽然上面的事情发生的可能性很小,但是还是非常危险的,所以我建议大家养成一个好的习惯,所有的变量我们声明的过程中最好都是初始化一下,数字初始化0,字符初始化为'\0', 字符串和指针初始化为NULL, 数组的话,感觉不同的类型根据类型进行不同初始化。
网友评论