数组,即一组相同类型元素的集合。
数组的创建:
1. 一维数组:type_t arr_name [const_n],其中,type_t是指数组的元素类型,arr_name是指数组的名字,const_n是一个常量表达式,用来指定数组的大小,注意,[ ]内一定要是一个常量或常量表达式,不能使变量。
2. 二维数组:二维数组的创建于一维数组类似,只是多了一个维度。即type_t arr_name [const_n][const_n]。同样的type_t是数组的元素类型,arr_name是指数组的名字,const_n是常量表达式,并且必须是常量或常量表达式,不能是变量。
数组的初始化:指在创建数组的同时给数组的内容一些合理初始值。
1.一维数组:eg:int arr[10]={1,2,3}; char arr1[]=”abcdrf”;。注意,数组在创建的时候想不指定数组确定的大小就得初始化。数组的元素个数根究初始化的内容来确定。eg:int arr[]={1,2,3};此时数组的元素个数就是3个。
2.二维数组:eg:int arr[3][4]={1,2,3,4}; intarr[3][4]={{1,2},{3,4}};int arr[][4]={{2,3},{4,5}};注意:1初始化内部的花括号,不括就不括,要括就全括。2二维数组初始化行元素个数可以不写,但列元素个数必须得写。
数组在内存中的存储:不管是一维数组还是二维数组,在内存中都是连续存放的。随着数组下标的增长,数组元素的地址也在有规律的递增。
数组名:
1. 数组名代表整个数组只有两种情况:第一种是当数组名单独放在操作符sizeof()中,此时数组名代表整个数组。第二种情况是当数组名前面加取地址操作符,eg:&arr;,此时数组名代表整个数组。其他情况,数组名都代表的是该数组的首元素。
2. 二维数组数组名代表整个数组也只有两种情况,即数组名单独放在操作符sizeof()中和数组名前面加取地址操作符。其他情况,二维数组的数组名都代表该二维数组的第一行数组元素。
3. 二维数组的行数组相当于一个一维数组。行数组的数组名一般情况也只代表首元素。除了单独放在操作符sizeof()中和前面加取地址操作符。
数组作为函数参数:
数组作为函数参数,不会把整个数组传递过去,传递给形参的是数组名,所以函数接收的是数组名,即数组首元素的地址。所以即使在函数参数部分写成数组的形式,依然表示的是一个指针。
指针访问数组:
*arr、*(arr+0)、arr[0]三个表达式都表示的是数组首元素的值。
arr[i]、*(arr+i)、*(i+arr)、i[arr]四个表达是都表示的是数组第i个元素的值。