C

6. C语言教程-数组

6. Array

Posted by xuepro on October 30, 2017

“教小白精通编程”系列之“C语言教程” (版权所有,不得转载,擅自抄袭转载将承担法律责任)

6. 数组Array

存储一系列相同类型元素的一块连续存储空间(顺序集合)。

假如有100个同类型的元素,如果每个都起一个名字,可能是这样的:number0, number1, …, and number99。这100个同类元素我们可以将它们依次存放在一块内存中,我们只要用一个名字“numbers”来指示这块内存,然后用所谓的“下标”去访问每个元素:numbers[0], numbers[1], and …, numbers[99]。岂不更加方便?

arrays

声明数组

格式

 类型   数组名[大小]

 类型   数组名[大小] = 初始化式

类型   数组名[] = 初始化式

例如:

int  arr[10];   /*大小为10的数组,其中的数据元素没有初始值*/
int  arr[10] = {0,1,2,3,4,5,6,7};   /*大小为10的数组,其中前8个数据元素有初始值*/
int  arr[] = {0,1,2,3,4,5,6,7};  /*大小为8的数组,每个元素有初始值*/

特点: 大小固定-“指定或初始化决定”。

可以通过 “下标访问运算符[]” 去存取(读写)单独的数据元素。

/* defines an array of 10 integers */
int numbers[100];

/*我们可以用下标运算符[]去访问每个元素,下标从0开始,依次为:0,1,2,...999
比如, numbers[i]去访问下标是i的元素,即第i+1个元素
*/
numbers[0] = 10;
numbers[1] = 11;
numbers[2] = 12;
numbers[3] = 13;
numbers[4] = 14;
numbers[5] = 15;
numbers[6] = 16;


/*我们也可以用一个循环语句去访问每个元素*/
for(int i = 0 ; i<100; i++)
     numbers[i]  = 10+i;

多维数组

可以通过多个下标去存取其中的数据元素,其定义格式类似于一维数组,如下:

  类型  数组名[ size1] [ size2]  [ sizek];
  类型  数组名[  ] [ size2]  [ sizek] = {初始化公式}; /*类似于一维数组,其中第一维可以不指定大小,而由初始化式子中的个数决定!**

例如:

/*定义了一个二维数组,第一维(称为行)大小是3,第二维(称为列)大小为4*/
int a[3][4] = {  
   {0, 1, 2, 3} ,   /*  行下标为0的第1行的初始化 */
   {4, 5, 6, 7} ,   /*  行下标为1的第2行的初始化  */
   {8, 9, 10, 11}   /*  行下标为2的第3行的初始化  */
};

/*定义了一个二维数组,第一维(称为行)大小是2,第二维(称为列)大小为4.
 其中的行数由初始化式子中的个数确定
*/
int matrix[][4] = {  
   {0, 1, 2, 3} ,   /*  行下标为0的第1行的初始化 */
   {4, 5, 6, 7} ,   /*  行下标为1的第2行的初始化  */  
};

二维数组a的下标访问示意图:

程序示例:

#include <stdio.h>
 
int main () {
   /* 一个5行2列的二维数组*/
   int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}};
   int i, j;
 
   a[3][1] = 41;  /*修改下标为[3][1]即第4行第2列的元素的值为41*/
   
   /* 输出每个元素的值 */
   for ( i = 0; i < 5; i++ ) {
   
      /*输出下标为i的这一行的每个元素*/
      for ( j = 0; j < 2; j++ ) {   
         printf("a[%d][%d] = %d\n", i,j, a[i][j] );
      }
      
   }
   
   return 0;
}

程序执行结果为:

a[0][0]: 0
a[0][1]: 0
a[1][0]: 1
a[1][1]: 2
a[2][0]: 2
a[2][1]: 4
a[3][0]: 3
a[3][1]: 41
a[4][0]: 4
a[4][1]: 8

练习

关注“教小白精通编程”博客微博“教小白精通编程”  


支付宝打赏 微信打赏

您的打赏是对我最大的鼓励!