一维数组
1.格式: eg: int arr[3]={1,2,3,4};
输入一个名为arr的数组,[3]代表arr数组中的第三个元素,=后面代表arr数组中所拥有的数组元素。
2.数组指针 int int*arr[] 表示什么呢
int为整型,那顾名思义arr数组中的元素都为整形
举一反三 float.......类型也是一样(数字类型组成)
***命名规则:一定要是由合法的标识符组成
3.概念:尤*数字组成*的以单纯的排序结构排列的结构单一的数组。
4.一维数组的长度eg: int a[3] 中只有a[0],a[1],a[2] 用[]里面的下标数来表示第几个元素
如果超过定义的数组下标元素是可以引用的,系统不作检查
一、 对数组地址的理解首先需要明确以下几个概念:
以一维数组 array[3] = {0, 1, 2} 为例。
1、数组的首元素地址
&array[0] (&为取地址符)
2、数组的地址
&array
3、数组名 array 代表数组首元素的地址
即 array 与 &array[0] 等价
4、步长的概念
例如:执行 &array + 1,对于这个数组来说存有3个int型的数,每个int型占据4个字节即这个数组占据12个 字节,执行 + 1 即跨过12个字节,所以对这个数组来说它的步长就位12.
执行 &array[0] + 1, 因为数组中存放的是int类型,所以它的步长就位4.
二、 区分重点举例eg:
int main()
{
int arr[]={9,8,7,6,5,4,3,2,1,0};
printf("%p\n",&arr[0]);//打印数组的首地址
printf("%p\n",arr);//打印数组的首地址
printf("%p\n",&arr);//打印数组的地址
return 0;
}
每个数组都对应一个地址,而数组中的每个元素也分别对应一个地址,而这些地址是不可改变的和具有一定的随机性,一旦输入就被系统随机存放。而一个数组内的元素之间的地址是有一定的地址规律存放的。
对于数组取地址可以相对应的赋值 eg:arr[]={1,2,3,4,5}
int(*P)[5]=&arr;
我们可以对其相应的计算得到相同的地址。
数组与指针的关系这是很多人所模糊的
*还没学指针的,可以不看下面这两张图
二维数组
1. 基本eg: int a[2][3]; 表示的是a数组中的第二行第三列
*对应: 类型说明符 数组名a [行数][列数]
2. 自我理解:一般不能将二维数组作为一个整体进行输入、输出、和运算
而只能针对二维数组的元素进行操作。
例如:int a[2][3];
a[1][2]=20; a[1][2]是a[2][3]数组中的一个数组元素,所以可以输出。
如果输入int a[2][3]=30 ,这就是很明显的错误,因为数组a中没有a[2][3]这个元素。原因呢?
如下
3. eg:int a[2][3] 中包含了6个int类型的数组元素:a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]
4.二维数组相对于一维数组,可以保存图片 图形。
一维数组只能保存数字,字符等等一维上的东西
5.我相信三维数组与更多维数组也与以上类似