8.6.3 初始化一维数组的注意事项

在C语言中对一维数组进行初始化赋值时,读者需要注意如下5点。

(1)当{ }中值的个数少于元素个数时,可以只给前面的元素赋值。例如下面的赋值代码。

    int a[10]={0,1,2,3,5};

上述代码表示只给a[0]~a[4]5个元素赋值,而后面的5个元素自动赋值为0。

(2)只能给元素逐个赋值,而不能给数组整体赋值。例如将10个元素全部赋值为5,只能写为如下格式。

    int a[10]={5,5,5,5,5,5,5,5,5,5};

而不能使用下面的格式:

    int a[10]=5;

(3)如果想给全部元素赋值,则在数组说明中可以不给出数组元素的个数。例如下面的代码。

    int a[5]={1,2,3,4,5};

上述代码可以写为:

    int a[]={1,2,3,4,5};

(4)关键字static定义了一个静态变量。在C语言中,规定只有静态变量和外部变量可以初始化(这将在后面介绍)。但在Turbo C中不加关键字static也可对变量进行初始化。

(5)在程序执行过程中,可以对数组进行动态赋值。这时可用循环语句配合scanf函数逐个对数组元素进行赋值。看下面的代码。

    int main(void){
        int i, max, a[10];
        printf("input 10 numbers:\n");
        for(i=0; i<10; i++)
            scanf("%d", &a[i]);
        max=a[0];
        for(i=1; i<10; i++)
            if(a[i]>max) max=a[i];
      printf("maxmum=%d\n", max);
    }

在上述代码中,第1个for语句逐个将10个数输入到数组a中。然后把a[0]送入max中。在第2个for语句中,将a[1]~a[9]逐个与max中的内容进行比较,若比max的值大,则把该下标变量送入max中,因此在已比较过的下标变量中max总是最大者。比较结束,输出max中的值。