C语言基础面面观之数组

    作者:课课家教育更新于: 2016-12-08 17:36:33

    大神带你学编程,欢迎选课

      相信学过C语言的同学都知道数组的重要性,那么对于初学者来说数组到底意味着什么呢?它的作用又是什么呢?不用担心,下面课课家笔者就为大家详细介绍C语言中的数组概念和作用。

      所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。下面笔者给大家举了一个例子,此次是输出一个4×4的整数矩阵,具体代码如下:

      #include

      #include

      int main()

      {

      int a1 = 20, a2 = 345, a3 = 700, a4 = 22;

      int b1 = 56720, b2 = 9999, b3 = 20098, b4 = 2;

      int c1 = 233, c2 = 205, c3 = 1, c4 = 6666;

      int d1 = 34, d2 = 0, d3 = 23, d4 = 23006783;

      printf("%-9d%-9d%-9d%-9d\\n",a1,a2,a3,a4);

      printf("%-9d%-9d%-9d%-9d\\n",b1,b2,b3,b4);

      printf("%-9d%-9d%-9d%-9d\\n",c1,c2,c3,c4);

      printf("%-9d%-9d%-9d%-9d\\n",d1,d2,d3,d4);

      system("pause");

      return 0;

      }

      运行结果:

      2034570022

      567209999200982

      23320516666

      3402323006783

      矩阵共有16个整数,我们为每个整数定义了一个变量,也就是16个变量。为了减少变量的数量让开发更有效率,我们其实可以通过把每一行的整数放在一个变量里面,或者把16个整数全部都放在一个变量里面。我们知道要想把数据放入内存,必须先要分配内存空间,比如放入4个整数,就得分配4个int类型的内存空间:int a[4];这样就在内存中分配了4个int类型的内存空间,共4×4=16个字节,并为它们起了一个名字,叫a。我们把这样的一组数据的集合称为数组(Array),它所包含的每一个数据叫做数组元素(Element),所包含的数据的个数称为数组长度(Length),比如int a[4];就定义了一个长度为4的整型数组,名字是a。数组中的每个元素都有一个序号,这个序号从0开始,而不是从我们熟悉的1开始,称为下标(Index)。使用数组元素时,指明下标即可,形式为:array Name[index]array Name为数组名称,index为下标。比如,a[0]表示第0个元素,a[3]表示第3个元素。接下来我们就把第一行的4个整数放入数组:

      a[0]=20;

      a[1]=345;

      a[2]=700;

      a[3]=22;

      这里的0、1、2、3就是数组下标,a[0]、a[1]、a[2]、a[3]就是数组元素。接下来我们来总结一下数组的定义方式:

      data Type array Name[length];

      dataType为数据类型,array Name为数组名称,length为数组长度。比如:

      float m[12];

      char ch[9];

      另外这里我们需要注意4点,具体为:

      ①数组中每个元素的数据类型必须相同,对于inta[4];,每个元素都必须为int。

      ②数组长度length最好是整数或者常量表达式,比如10、20*4等,这样在所有编译器下都能运行通过;如果length中包含了变量,比如n、4*m等,在某些编译器下就会报错。

      ③访问数组元素时,下标的取值范围为0≤index

      ④数组是一个整体,它的内存是连续的,下面是int a[4];的内存示意图(图1):

    inta[4];的内存示意图

    图1

      ◎数组的初始化

      在上面的代码中我们是先定义数组再给数组赋值,其实我们也可以在定义数组的同时赋值:

      int a[4]={20,345,700,22};

      {}中的值即为各元素的初值,各值之间用,间隔。

      对数组赋初值需要注意以下几点:

      ①可以只给部分元素赋初值。当{}中值的个数少于元素个数时,只给前面部分元素赋值。比如:

      int a[10]={12,19,22,993,344};

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

      当赋值的元素少于数组总体元素的时候,剩余的元素自动初始化为0:对于short、int、long,就是整数0;对于char,就是字符'\\0';对于float、double,就是小数0.0。

      我们可以通过下面的形式将数组的所有元素初始化为0:

      int a[10]={0};

      char c[10]={0};

      float f[10]={0};

      由于剩余的元素会自动初始化为0,所以只需要给第0个元素赋0值即可。具体示例:输出数组元素。

      #include

      int main()

      {

      int a[6]={299,34,92,100};

      int b[6],i;

      //从控制台输入数据为每个元素赋值

      for(i=0;i<6;i++){

      scanf("%d",&b[i]);

      }

      //输出数组元素

      for(i=0;i<6;i++){

      printf("%d",a[i]);

      }

      putchar('\\n');

      for(i=0;i<6;i++){

      printf("%d",b[i]);

      }

      putchar('\\n');

      return 0;

      }

      运行结果:

      90100332256810

      299349210000

      90100332256810

      ②只能给元素逐个赋值,不能给数组整体赋值。比如给十个元素全部赋1值,具体只能写为:

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

      而不能写为:

      int a[10]=1;

      ③如给全部元素赋值,那么在数组定义时可以不给出数组的长度。比如:

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

      等价于

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

      最后,我们借助数组来输出一个4×4的矩阵:

      #include

      #include

      int main()

      {

      int a[4]={20,345,700,22};

      int b[4]={56720,9999,20098,2};

      int c[4]={233,205,1,6666};

      int d[4]={34,0,23,23006783};

      printf("%-9d%-9d%-9d%-9d\\n",a[0],a[1],a[2],a[3]);

      printf("%-9d%-9d%-9d%-9d\\n",b[0],b[1],b[2],b[3]);

      printf("%-9d%-9d%-9d%-9d\\n",c[0],c[1],c[2],c[3]);

      printf("%-9d%-9d%-9d%-9d\\n",d[0],d[1],d[2],d[3]);

      system("pause");

      return 0;

      }

      本次C语言基础面面观之数组的教程到此就暂告一段落了,如果以后有补充的话笔者会继续在此补充,同时也欢迎大家的继续补充。最后希望这次的教程对大家学习C语言能够起到一定的帮助作用!

课课家教育

未登录