下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

C语言基础面面观之数组

作者:课课家教育     来源: http://www.kokojia.com点击数:877发布时间: 2019-03-04 10:14:43

标签: 编程语言C语言数组

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

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

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

  #include <stdio.h>

  #include <stdlib.h>

  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<length,过大或过小都会越界,导致数组溢出,发生不可预测的情况。

  ④数组是一个整体,它的内存是连续的,下面是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 <stdio.h>

  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 <stdio.h>

  #include <stdlib.h>

  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语言能够起到一定的帮助作用!

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程