数组
数组:即存储相同数据类型的集合我们称之为数组
对于数我们因该掌握以下内容
数组分为一维数组、二维数组、三维数组……
本片着重于一维数组于二维数组
一维数组
一维数组创建
int a[];//数据类型标识符(int char float...) 数组名[];
如上我们创建了可以存储int(整型)类型的数组a。
有时我们需要为数组指定大小,那么有应该如何做?
int a[4];//创建了一个可以存储4个int(整型)类型的数组a。
不难看出只要在中括号里填入大小即可
!!!注意:中括号里不能出现变量,哪怕是用const修饰的变量也不能出现,只能是常量整型表达式
例如
//错误写法
int i = 10;
int a[i];//***error
const int n = 10;
int b[n];//***error
int c[2.5];//**error
数组的初始化
int a[] = {1,2,3,4,5,6,7,8,9,10};//数组没有指定大小
当数组没有指定大小的时候,编译器会根据数组元素个数来指定大小,如上数组a的大小为10个整形;
但要注意字符串数组例外
char str1[] = "abcdef";//大小为7个字节
char str2[] = {'a','b','c','d','e','f'};//大小为6个字节
因为str1存储的是字符串,而字符串的结尾编译器会自动放个‘\0’字符。
数组的访问
通过下标访问,下标从0开始
char str1[] = "abcdef";
str1[2];//访问str1数组的第3个元素,使用下标应用操作符'[]'
一维数组的在内存中存储
由于输出的内存地址为16进制所8-C相差4,C-0相差4...
不难看出数组在内存中是连续存储的。
二维数组
二位数组的创建,与一维数组类似
int num[2][3];//创建一个“2行3列”的数组
!!!注意:中括号里不能出现变量,哪怕是用const修饰的变量也不能出现,只能是常量整型表达式
但二维数组的行是可以省略的,列是不能省略的;如以下代码
//正确写法
int num1[][4];
int num2[2][4];
//错误写法
int num3[1][];
int num4[][];
二维数组的初始化
int num1[2][4] = {1,2,3,4,5};
int num2[2][4] = {{1,2,3,4},{5,6,7,8}};
上面两种初始化的区别:第一种方法,如果元素个数大于列则会自动初始化到下一行。第二种方法,指定初始化的行(推荐)
二维数组的访问,类似于一维数组
int num2[2][4] = {{1,2,3,4},{5,6,7,8}};
num2[0][2];访问第一行数组的第3个元素3
我们可以将一维数组arr[0]作为数组名,由此我们可以这么写arr[0][j]表示第一行数组第j个元素。
二维数组在内存中的存储
不难看出二维数组在内存中也是连续存储的