在C语言编程中,定义一个数组时要不要初始化?

来源:百度知道 编辑:UC知道 时间:2024/05/16 10:37:26
即a[M]={0}?有时不定义程序能运行,有时必须要初始化,谁知道为什么?谢谢

首先要清楚什么是初始化:
在声明变量的同时赋值就是初始化。
而在其后的赋值语句就不是初始化。
一般来说,如果你不给变量一个确定的值,就直接引用它,则系统不能
保证运行的唯一性,而这是我们程序所不允许的。所以我们一般用初始化的方法来确定其值。
但并不总是这样。如下:
int i;
for (i=0;i<10;i++)...
i就不是通过初始化,而是用赋值的方法确定值的。

扩展到数组中,也是如此,如果你在引用数组元素前不把它的值确定下来,程序运行就可能不确定。
因为确定数组元素值的方法有两个:初始化和赋值,所以“必须要初始化”是没有道理的。

这得看你自己的具体需求,如果你确定而且是非常确定你的数组中的每一个元素都会在以后的程序中被先赋值再调用(比如说,先向数组中读入了数据,再调用),那么没有必要初始化

如果你不能确定以上所说,也就是说,你会用到数组的默认值,那么,初始化数组是避免程序崩溃的好方法。

值得说的是,初始化数组会导致程序效率降低那么一点点(相当于隐形执行一个循环,给数组的每一个元素赋值),不过,这点影响应该不大。

首先要清楚什么是初始化:
在声明变量的同时赋值就是初始化。
而在其后的赋值语句就不是初始化。
一般来说,如果你不给变量一个确定的值,就直接引用它,则系统不能保证运行的唯一性,而这是我们程序所不允许的。所以我们一般用初始化的方法来确定其值。
如char str[100]
引用memset(str,sizeof(str),0);
即将所有的数组元素初始化为0;
但并不总是这样。如下:
int i;
for (i=0;i<10;i++)...
i就不是通过初始化,而是用赋值的方法确定值的。

扩展到数组中,也是如此,如果你在引用数组元素前不把它的值确定下来,程序运行就可能不确定。
因为确定数组元素值的方法有两个:初始化和赋值,所以初不初始化要视情况而定。

C语言中变量是不用初始化(赋值)也可以通过编译的.但声明数组