一维数组
引入
int main()
{
int a = 1;
int b = 2;
int c = 3;
return 0;
}
这是我们以前存放整数的一种方式,当数据的元素个数较少时我们可以利用这种方式,如何数据的元素个数过多是我们该如何储存呢?这是后就引入了数组这个概念。
1.定义
一组相同类型数据的线性集合。
类型说明符 数组标识符[常量表达式];
类型说明符:数组中元素的类型。
数组标识符:数组型变量的名称,与变量名命名一致。
常量表达式:数组长度,存放数据的元素个数。
int Array[3];
char ch[10]; //字符数组
2.引用
数组标识符[下标]
int Array[3]={1,2,3};
// 0 1 2
//在一个有n个元素的数组里,下标的取值范围是0~n-1
数组下标是从0开始的,下标的取值范围是0~2之间,所以最大的下标元素使Array[2],在Array[3]={1,2,3}中,Array[0]表示第一个元素,Array[1]表示第二个元素,Array[2]表示第三个元素。这样直接表达将会难于理解,我们直接通过代码来看什么是“下标”。
可以看到上面的结果和我们猜测的一样 ,如果我们打印Array[3]将会显示一个负值,此时程序的运行结果是错误的。
那我们该如何打印一个一堆数组呢?
我们可以利用前面学到的循环控制来打印数组
int main()
{
int array[3] = { 1,2,3 };
int i;
for (i = 0; i < 3; i++)
{
printf("%d ", array[i]);
}
return 0;
}
注意:数组下标可以是整形常量或整形表达式。 不能直接使用array[3],会出现下标越界错误
3.一维数组的初始化
数组的初始化指的是,在创建数组时给数组赋初始值
例如:
int array1[5] = { 1,2,3,4,5 }; //直接对数组赋初值
int array2[5] = { 1,2,3 }; //部分赋值
int array3[] = { 1,2,3 }; //对数组赋初值,但不指定数组长度
4.一维数组的使用
int main()
{
int array[] = { 1,2,3,4,5,6,7,8,9 };
int i = 0;
int sz = sizeof(array) / sizeof(array[0]); //计算数组的元素个数
for (i = 0; i < sz; i++)
{
printf("%d", array[i]);
}
printf("\n");
for (i = sz - 1; i >= 0; i--)
{
printf("%d", array[i]);
}
printf("\n");
return 0;
}
总结:
1.数组是使用下标来进行访问的,下标是从0开始的。
2.数组的大小可以通过计算得到。
5.一维数组在内存中的存储
仔细观察数组输出的结果,我们知道,随着下标的增长,元素的地址,也在有规律的递增。
由此可以得出结论:数组在内存中是连续存放的。
二堆数组
1.定义
二堆数组可以看做是特殊的一堆数组,其各个元素仍然是一个数组。
数据类型 数组名[常量表达式1][常量表达式2];
这里与一维数组不同的地方是增加了一个常量表达式
int array[3][4];
“常量表达式1”定义了二维数组的行数,“常量表达式2”定义了二维数组的列数。
2.引用
与一维数组相似,二维数组也要注意下标越界问题。
对于二维数组来说,无论是行下标还是列下标,都是从0开始的,因此对于一个任意一个m
行n列的二维数组array[m][n],其行下标、列下标的取值范围分别是m-1、n-1,最大下标元素array[m-1][n-1]。
3.二维数组的初始化
int array[3][4] = { 1,2,3,4,2,3,4,5,3,4,5,6 };
//按照数组排列顺序对元素赋值,括号内数据少于数组元素个数,默认赋值为0;
int array1[][4] = { 1,2,3,4,2,3,4,5,3,4,5,6 };
//为元素赋初值,可以省略行下标,但不能省略列下标
int array2[3][4] = { {1,2,3,4},{2,3,4,5},{3,4,5,6} };
//分行赋值
int array3[3][4] = { {1,2},{3,4},{5,6} };
//分行赋值,括号内数据少于数组元素个数,默认赋值为0;
4.二维数组的使用
二维数组同一维数组的使用方法一样,也是通过下标的方式
int main()
{
int array[3][4] = { 1,2,3,4,2,3,4,5,3,4,5,6 };
int i = 0;
int j = 0;
//打印二维数组中某一个元素
printf("%d\n", array[2][1]);
//打印整个二维数组的元素
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("%d ", array[i][j]);
}
printf("\n");
}
return 0;
}
5.二维数组在内存中的存储
我们可以把二维数组理解为:一维数组的数组
以上便是关于一维数组和二维数组所有的内容了如果有不清楚的地方,欢迎大家在评论区讨论。
感谢您的观看,这里是磊磊吖的学习笔记,记得订阅和关注,让我们一起学习