数组
百度百科:所谓数组,是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。
按我的话来说,就是一堆同类型元素的集合体,按照连续的存储方式在内存存储。
出现的原因
比如在定义整型数据时,需要定义n个整型变量,那就要写n个定义的语句,这样的工作是十分繁琐且无意义的,就需要数组的出现,只要定义一条语句就可以。
一维数组定义与使用
//数据类型 数组名[元素个数]
int array[10]; //定义一个整形数组,有10个元素
赋值操作
int arra[5] = {1,2,3,4,5}; //定义时赋值
int arr[5] = {1,2,3}; //可以赋值部分,剩余的值均为0
int a[5] = {0}; //直接赋值为0
int b[] = {1,2,3,4,5}; //定义后面紧跟赋值操作时,可以省略赋值操作
int array[5];
array[0] = 1; //通过数组下标赋值
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;
获取数组个数
int b[] = {1,2,3,4,5};
int size = sizeof(b)/sizeof(b[0]); //获取数组大小
注意下标从0开始,因为机器的底层都是二进制,就0和1,所以下标从0开始。到元素个数-1结束。要避免数组越界,不然会操作非法内存,出现段错误。
二维数组
二维数组由多个一维数组组成,使用方法与一维数组无异。
//数据类型 数组名[元素个数][元素个数]
int array[2][3]; //定义一个整形二维数组,有2*3个元素,也可以理解成两行三列
在定义时,后面没有赋值操作,两个[ ]内元素个数不可省略,不然编译器不知道分配多大内存,报错。
赋值操作:与一维数组差不多
int array[][3] = {1,2,3,4}; //系统自动计算为2*3的数组,后面的数据补为0
int arra[2][3] = {0};
int arr[2][3] = {{1,2,3},{4,5,6}};//完全赋值
int ar[2][3] = {1,2,3,4,5,6}; //和上面的方面一样,系统会自动将数据分开
int a[2][3];
a[0][0] = 1; //下标赋值法
获取数组元素个数
int r = sizeof(a)/sizeof(a[0]); //获取行
int j = sizeof(a[0])/sizeof(a[0][0]); //获取列
数组大小 = 元素类型的字节数*元素个数
数组本质
数组就是多个连续的同种类型的内存块,本质还是一个数据。二维数组并不是数据在内存中分行与列,只是让我们感性认知,取二维数组这个名字。本质就是多个一维数组连在一起,组成二维数组。
注意事项
使用数组谨记下标从0开始,到元素个数减一结束,如果数组下标越界,会操作非法内存,程序可能会出错,调试会很痛苦。
数组的简单介绍结束。