AP计算机科学A(APcomputer science A)复习备考攻略视频教程
42830 人在学
相信学过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):
图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语言能够起到一定的帮助作用!