【七】c语言程序设计-数组篇
前言
对于同类型批量数据的组织方式,可以使用数组。
数组是指具有内在联系的一组相同类型变量的有序集合,它用一个统一的数组名来表示这一组变量,用序号来说明每个变量在数组中的相对位置,数组中的每个变量就称为数组元素,表面数组在数组中相对位置的序号就称为元素的下标。
7.1、数组
7.1.1、数组的使用
定义数组
<类型>变量名称[元素数量]
例如:int grades[100];
-
元素数量必须是整数
数组
-
是一种容器,特点是: 其中所有的元素具有相同的数据类型; 一旦创建,不能改变大小 数组中的元素在内存中是连续一次排列的
数组的单元
-
数组的每个单元就是数组类型的一个变量 使用数组时放在[]中的数字叫做下标或索引,下标从0开始计数
有效的下标范围
-
编译器和运行环境都不会检查数组下标是否越界,无论是对数组单元还是写 一旦程序运行,越界的数组访问可能造成问题,导致程序崩溃 segmentation fault 但是也可能运气好,没有造成严重的后果 所以我们在编写程序的时候通过使用有效的下标值:[0,数组的大小-1]
能否创建一个长度为0的数组
-
int a[0] 可以存在,但是无用
7.1.2、数组的例子:统计个数
写一个程序,输入数量不确定的[0,9]范围内的整数,统计每一种数字出现的次数,输入-1表示结束。
#include<bits/stdc++.h> using namespace std; int main(void){ int x; int count[10]; int i; for(i=0;i<10;i++){ count[i]=0; } scanf("%d",&x); while(x!=-1){ if(x>=0&&x<=9){ count[x]++; } scanf("%d:%d ",&x); } for(i=0;i<10;i++){ printf("%d:%d ",i,count[i]); } return 0; }
7.2、数组的运算
集成初始化
-
用[n]在初始化数据中给出定位 没有定位的数据接在前面的位置后面 其他位置直接补0 也可以不给出数组大小,让编译器自己算 特别适合初始数据稀疏的数组
数组的大小
sizeof(a)/sizeof(a[0])
-
sizeof(a[0])给出数组中单个元素的大小,于是相处就得到了数组的单元个数 这样的代码,一旦修改数组中初始的数据,不足要修改遍历的代码
遍历数组
-
通常都是使用for循环,让循环变量i从0到<数组的长度,这样循环体内最大的i正好是数组最大的有效下标 常见的错误是: 循环结束条件是<=数组长度。或: 离开循环后,继续使用i的值来做元素的下标!
注意:
-
数组作为函数的参数时: 不能在[]中给出数组的大小 不能利用sizeof来计算数组的元素个数
7.2.2、二维数组
int a[3][5];
通常理解为a是一个3行5列的矩阵;
二维数组的遍历
for(i=0;i<3;i++){ for(j=0;j<5;j++){ a[i][j]=i*j; } }
-
a[i][j]是一个int 表示第i行第j列上的单元
-END-