前言
什么是初始化?为什么要初始化?静态变量和局部变量的初始化又有什么区别?实际应用中应该怎么做?本文将一一回答这些问题。
什么是初始化
初始化指的是对数据对象或者变量赋予初始值。例如:
int value = 8; //声明整型变量并初始化为8
int arr[] = {1,2,3}; //声明整型数组arr,并初始化其值为1,2,3
为什么要初始化
我们来看一个示例程序。
test0.c程序清单如下:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int sum;
int randNum;
while(10 > sum)
{
randNum = rand() % 10;
sum += randNum;
printf("rand num is %d,sum is %d\n",randNum,sum);
}
printf("the final sum is %d\n",sum);
return 0;
}
程序随机产生0到9的数字,使得sum的值大于或等于10时,退出程序。
编译并运行:
gcc -o test0 test0.c
./test0
运行结果如下(每次运行结果可能不同):
rand num is 3,sum is -4040865
rand num is 6,sum is -4040859
rand num is 7,sum is -4040852
rand num is 5,sum is -4040847
rand num is 3,sum is -4040844
rand num is 5,sum is -4040839
(省略其他内容)
从运行结果来看,程序并没有达到我们的预期,这是为什么呢?
很多读者可能已经知道,问题在于声明sum之后,没有为其赋初始值,在这样的情况下,sum的值是随机的,因此在一开始sum可能是一个很小的负数,导致多次循环出现。很显然,初始化避免使用了变量的“脏值”