什么是数组
首先是一种数据结构,可以存储一个固定大小的相同类型元素的顺序集合。是一组相同类型元素的集合。
一维数组
声明一维数组
Type arryname[arrysize]
aryyname-数组名称
Type-数组类型 可以是C中任意的数据类型
arrysize-数组的大小(必须是大于0的整型常量)
例如:声明一个长度为10的整型数组。
int arry[10] 可以存放十个整型数据
数组的初始化
- 逐个初始化
int arry[10]={1,2,3,4,5,6,7,8,9,10};
从数组的第一个索引开始赋值 1 2 3 4 5 6 7 8 9 10
赋值的个数不得超过数组的大小 - 完全初始化 int arry[10]={0};//数组中的元素都被初始化为0
- 未知大小 如果不知道需要的数组大小 可以int arry[]= {初始化};这时候数组的大小就是初始化元素的个数
- 单个数组初始化 int arry[\10];arry[\0]=1; arry[\9]=10 //根据数组的索引值 赋值数组中单个数组元素的值 C语言基索引是0 数组最后的索引等于数组大小-1
如何获取数组的大小
以char carry[]=”I love C”;
如果我们要一个一个数元素,效率低且很原始!!!sizeof(数组名)/数组名[0]
即可得到数组的长度 因为是字符串格式,会在结尾加上’\0’表示字符串的结束,所以长度是9
访问数组
int num = arry[5];可以获取到索引为5 数组的第六个元素的值
利用for循环给数组赋值及访问数组
#include<stdio.h>
int main()
{
int arry[10];
for (size_t i = 0; i < 10; i++)
{
arry[i] = i;
}
//arry[10] = 15;
for (size_t i = 0; i < 10; i++)
{
printf("arry[%d] = %d\n", i, arry[i]);
}
}
一维数组在内存中的存储
因为还没有写到指针,这里就不再深究内存相关的东西了,等到指针那一节,再说。
二维数组
二维数组的声明
int arry[2][3];//声明一个”两行三列的数组” 第一个索引代表行索引 第二个索引代表列索引
二维数组初始化
完全初始化
int arry[2][3]={1,2,3,4,5,6};
从’0行0列’开始赋值 从先赋值递增列进行赋值
arry[ 0][0] arry[0][1] arry[0][2]
arry[ 1][0] arry[1][1] arry[1][2]
还有一种写法是将
int arryj[3][2] = {
{1,2},
{3,4},
{5,6}
};
最大{}里面的{}的数量就是行 而最里面{}的数量就是列 我个人偏向这种赋值方法 很直观 方便理解和查看。
部分初始化
int arry[3][4]={1,2,3,4,5,6};
从arry[0][0]初始化到arry[1][1] 其他元素都为0.
一维数组中 我们可以省略数组的大小 根据初始化数组的元素确定数组的大小 二维数组 可以省略行 但是不能省略列
int arryj[][2] = {
{1,2},
{3,4},
{5,6},
{7,8},
{9,10},
{11,12}
};
这里表示的是初始化一个6行2列的二维数组
访问二维数组
可以根据上面那个图理解 比如我要获取数组arryj[6][2]的第二行第二列
int num = arryj[1][1]
遍历二维数组也是同理
int arry2[2][3] = { 1,2,3,4,5,6 };
for (size_t i = 0; i < 2; i++)//行
{
for (size_t j = 0; j < 3; j++)//列
{
printf("%d\t", arry2[i][j]);
}
printf("\n");
}
二维数组在内存中的存储
二维数组在内存中也是连续的,和一维数组一样 理解的时候可以把二维数组当作一维数组理解
比如int arry[12] 二维数组可以写作arry[3][4] 即三个一维数组组成了一个二维数组
数组越界
超出数组的大小 就会造成数组的越界 越界访问一段内存是很危险的行为 轻则乱码重则崩溃
网站标题:CV鼻祖洋芋
原创文章,作者:locus,如若转载,请注明出处:https://blog.cvpotato.cn/forward-code/c-2/64/
本博客所发布的内容,部分为原创文章,转载注明来源,网络转载文章如有侵权请联系站长!