和我一起学C吧
努力是可以提升智力的
5.1.2 数组的使用:
如何定义和使用数组,数组的下标和下标的范围
前面有数组的简单介绍,可以去回顾一下其相关定义
变量名称[元素数量];
例: int grades[100];
double weight[20];
注:元素数量必须是整数。
数组的特点:
- 其中所有的元素具有相同的数据类型;
- 一旦创建,不能改变大小;
- 数组中的元素在内存中是连续依次排列的。
数组的单元
- 数组的每个单元就是数组类型的一个变量
- 使用数组时放在[ ]中的数字叫做下标或索引,下标从0开始计数:
Grades[0];
Drades[99] ;
有效的下标范围
- 编译器和运行环境都不会检查数组下标是否越界,无论是对数组单元做读还是写。
- 一旦程序运行,越界的数组访问可能造成问题,导致程序崩溃。(segmentation fault)
- 也有可能不会造成严重后果(概率较小)。
- 因此,程序的有效下标值:[0,数组的大小-1] 。
I nt A[10]; A[7]=0; 表示在数组A中,将7这个位置赋值为0; 长度为0 的数组,可以存在,但是无用。
5.1.3 数组的例子:统计个数
例题:
写一个程序,输入数量不确定的[0,9]范围内的整数,统计每一种数字出现的次数,输入-1表示结束。(运行过程中,不定个数的输入范围内的数,即可统计每个数输入的个数)
以下为对应代码:
5.2.1 数组的运算
在一组给定的数据中,如何找出某个数据是否存在? 1
、
数组的集成初始化:
Int a[ ]={2,4,6,7,1,3,5,9,11,13,23,14,32}
- 直接用大括号给出数组的所有元素的初始值。
- 不需要给出数组的大小,编译器替你数数。
补充 : int a[13]={2} // {2,4,6,7,1,3,5,9,11,13,23,14,32};
表示数组为13个数,只给第一个数赋值为2,那其他数都初始化为0。
以下为对应代码:
2、集成初始化时的定位 Int a[10] = {
[0]
= 2, [2] = 3,6,};
- 用[n]在初始化数据中给出定位;
- 没有定位的数据接在前面的位置后面;
- 其他位置的值补0;
- 也可以不给出数组大小,让编译器算;
- 特别适合初始数据稀疏的数组。
以下为对应代码:
3
、
数组
的大小
- sizeof 给出整个数组所占据的内容的大小,单位是字节:
sizeof(a)/sizeof(a[0])
- sizeof(a[0])给出数组中单个元素的大小,于是相除就得到了数组的单位个数。
优点: 这样的代码,一旦修改数组中初始的数据,不需要修改遍历的代码。
以下为对应代码:
4、 数组的赋值
- 数组变量本身不能被赋值。
- 要把一个数组的所有元素交给另一个数组,必须采用遍历(即写一个循环):
for ( i = 0; i b[i] = a[i];
}
- 通常都是使用for循环,让for循环变量i从0到
- 常见错误是:
循环结束条件是<=数组长度,或;
离开循环后,继续用i的值来做数组元素的下标!
编程练习解析汇总(2) & 数组 其中打印九九表,for语句的代码贴错图了,以下为原代码:
ENDx