数组

数组是由一系列类型相同的元素构成。

它的定义格式是:

     数据类型      数组名[ 常量表达式]

数据类型指明了数组中元素的类型,数组名可用标识符表示,[ ]方括号指明了数组中包含的元素数目。


给数组的元素赋初值,称为数组的初始化。初始化的方法是将数组元素的初值依次放在一对花括号当中,值与值之间用逗号分开。

1)对所有元素赋初值

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

将0,1,2,3,4分别赋给a[0]、a[1]、a[2]、a[3]、a[4]。数组的开始都要从a[0]第0个元素开始。

2)部分元素赋初值

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

当{}里的数值少于数值数目时,多余的数组元素被默认设置初值0。所以a[0]=1,a[1]=2......a[5]=6,a[6]=0,a[7]=0......a[9]=0。

例如下面的程序:

#include<stdio.h>
#define MON 12
int main()
{
    int days[MON]={31,28,31,30,31,30,31,31,30,31,30,31};
    int index;
    for(index=0;index<MON;index++)
      printf("Month %d has %2d days.\n",index+1,days[index]);


    return 0;
}


二维数组

它的一般定义格式为:

  数据类型    数组名[常量表达式1][常量表达式2]

数据类型和数组名的含义和一维数组相同,常量表达式1是说明二位数组的行数,常量表达式2说明每一行的列数。常量表达式1、2的值都必须是正整数。

例如:int  a[2][3];   // 定义了一个2行3列的二维数组

二维数组的初始化

1)以数组中的行为单位,分行对数组所有元素赋初值。

例如:  int a[2][3]={{1,2,3},{4,5,6}};

第一个花括号{1,2,3}依次赋给第0行的元素a[0][0]、a[0][1]、a[0][2];把第2个花括号{4,5,6}依次赋给数组a第一行的元素a[1][0]、a[1][1]、a[1][2]。

2)以不分行的方式按数组元素的排列顺序依次列出各个元素的值,并用一个花括号括起来。

例如:int a[2][3]={1,2,3,4,5,6};

   同样,a[0][0]=1,a[0][1]=2......a[1][2]=6。

3)只对部分元素赋初值。一种是以行为单位,依次列出部分元素的值。

例如: int a[3][4]={{1,2},{0,1,3},{4,5,6}};

没有明确说明的列出初值的元素,默认初值为0。即等同于

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

另一种是以数组元素的排列顺序依次列出前面部分元素的值。

例如: int  a[3][4]={0,1,2,3,4,5};

即a[0][0]=0,a[0][1]=1,a[0][2]=2,a[0][3]=3,a[1][0]=4,a[1][1]=5,a[1][2]=0,a[1][3]=0.......a[2][3]=0。

4)可以根据给出的初始化的数据,自动确定数组的行数。

例如:int   a[ ][4]={{1,2,3},{3,4,5,6},{7,0,9,7}{4,5,2}};    //这里定义了一个4行4列的二维数组。

ps:二维数组初始化时,不能省略列数,原因是二维数组按行存储,列必须确定。

#include <stdio.h>
int main(void)
{
     int a[3][4]={{3,1,5,4},{7,9,8,1},{1,5,7,9}};
     int i,j;
     for( i=0;i<3;i++)
     {  for(j=0;j<4;j++)
         printf("%-2d",a[i][j]);
       printf("\n");
     }
     return 0;
}

输出结果如下:

3 1 5 4 
7 9 8 1 
1 5 7 9


定义多维数组时,对数组的维数没有限制。

例如:int  a[2][5][6];   //定义了一个三维数组

          int  a[2][5][8][8][9];    //定义了一个五维数组

          ......    

前面关于二维数组的初始化同样适用于更多维的数组。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值