数组:存储多个同一种数据类型的集合。
一维数组:由一个下标就能找到数组内特定的某个元素
一维数组的定义:数据类型 数组名称[元素个数];
例:
int name[100]; //定义一个存100个int数据的一维数组
一维数组的内存分布:
1、数组定义在哪里,内存就分配在哪里。
数组作为局部变量,则它的内存就分配在栈上;
数组作为全局变量,则它的内存就分配在数据段上;
还会有动态分配的内存。
注:
为了防止栈溢出的错误,所以在栈上定义的数组不宜过大,一般512以内。
2、数组分配的存储空间是连续线性排布的,中间不会有任何间隙。
3、数组的第一个元素,存储在内存的低地址(最先存储进去);最后一个元素,存储在内存的高地址(最后存储进去)。
一维数组的初始化:
1、在定义的时候就对每个元素进行初始化
int a[3]={1,2,3};
int b[10]={1,2,3}; //只对前面3个进行初始化,后面的7个为随机值
int c[]={1,2,3,4,5}; //根据初始化的个数来定义数组的大小
2、对于每一个元素,通过数组访问来初始化
数组访问:
将每个元素的内存进行编号,下标从0开始。通过 数组名称[下标索引] 来访问元素
如:
int a[3]={1,2,3}
则a[0]为1, a[1]为2, a[2]为3
访问数组的注意事项:
1、下标可以是常数,也可以是变量
2、注意数组的大小范围,访问的时候不能越界。越界的话编译器不会报错,但会操作一个不属于数组的内存,导致结果错误或严重错误。
遍历一维数组(循环+下标变量):
int array[100];
int index;
for (index=0; index<100; index++){ array[index]=index; } 一维数组的内存大小: int a[3]; sizeof(a) 输出数组占用的内存大小,单位为字节 sizeof(int)*3 也可以输出数组占用的内存大小 sizeof(a)/sizeof(int) 即为数组元素的个数 二维数组
二维数组需要2个下标来定位某个元素。
例:
int a[3][4]; 定义一个3行4列的二维数组
二维数组的初始化:每一行,每一行的初始化
1、
int a[3][4]={
{0,1,2,3}
{4,5,7,8}
{8,9,10,11}
};
2、
int a[][4]={
{0,1,2,3}
{5,6,2,3}
};
3、访问每一个元素,通过元素访问来初始化二维数组
二维数组的访问:
名字[行标][列标] //行标和列标都是从0开始编号
二维数组的内存分布:
例:a[2][3] 在栈中存储顺序为:栈顶高地址 a[1][2], a[1][1], a[1][0], a[0][2], a[0][1], a[0][0] 低地址