wordpress下载后放哪,三明seo培训,wordpress发布文章,团队建设❣博主主页: 33的博客❣ ▶文章专栏分类: C语言从入门到精通◀ #x1f69a;我的代码仓库: 33的代码仓库#x1f69a; 目录 1. 前言2.一维数组的概念3.一维数组的创建和初始化3.1数组的创建3.2数组的初始化3.3数组的类型 4.一维数组的使用4.1数组下标4.2数组元素打印4.4数组元… ❣博主主页: 33的博客❣ ▶文章专栏分类: C语言从入门到精通◀ 我的代码仓库: 33的代码仓库 目录 1. 前言2.一维数组的概念3.一维数组的创建和初始化3.1数组的创建3.2数组的初始化3.3数组的类型 4.一维数组的使用4.1数组下标4.2数组元素打印4.4数组元素输入 5. 一维数组在内存中的存储6.sizeof求数组个数7.二维数组7.1 二维数组的创建7.2二维数组初始化 8.二维数组的使用8.1二维数组的下标8.2 二维数组的打印8.3 二维数组的输入8.4二维数组在内存中的存储 9. 总结 1. 前言
前面我们已经学习了分支和循环这篇文章我们一起来学习新的知识—数组数组是一个十分常见的知识接下来就一起进入数组的学习吧 本章重点 本篇文章主要介绍数组的概念一维数组的创建的初始化一维数组的使用一维数组在内存中的存储二维数组的创建和初始化二维数组的使用等等。 2.一维数组的概念
数组是一组相同类型元素的集合 数组中存放的是一个或者多个数据但数组元素不能为0 数组中存放的多个数据类型是相同的 3.一维数组的创建和初始化
3.1数组的创建
格式如下
type arr_name[常量值];type是指数组的类型可以是char、short、int等等。 arr_name是数组名自定义。 [常量值] 常量值是用来定义数组的大小自定义。 例如
int a[3];//定义了一个数组a长度为33.2数组的初始化
数组在创建的时候我们需要得定义一些初始值这种就称为数组的初始化。 那么数组该如何初始化呢数组的初始化一般用大括号将数据放在大括号内。数组的初始化又可以分为完全初始化和不完全初始化。 例如
//完全初始化
int a[3]{1,2,3}
//不完全初始化
int a[5]{1}//第一个元素为初始化为1其余默认初始化为03.3数组的类型
数组也是有类型的数组算是一种自定义类型去掉数组名留下的就是数组类型
int a[3]{1}
char b[4]{1}数组a的类型是int [3] 数组b的类型是char [4] 4.一维数组的使用
4.1数组下标
c语言中数组下标是从0开始假设数组的长度是n那么数组的下标最大就是n-1.第1个数组元素可以写为a[0],第2个数组元素可以写为a[1],第3个数组元素可以写为a[2]…那么第n个数组元素就可以写为a[n-1]。 4.2数组元素打印
如果要访问整个数组该如何打印呢接下来我们通过一段程序来实现
int main()
{
int arr[3]{1,2,3}
int i0;
for(i0;i3;i){printf(%d,arr[i]);}
}4.4数组元素输入
如果要从键盘中输入一个元素存入数组中那么又该如何实现呢
int main()
{
int arr[3]{0}//默认初始化为0
int i0;
for(i0;i3;i){scanf(%d,arr[i]);//从键盘中输入一个元素存入数组arr中}
}5. 一维数组在内存中的存储
我们如果想要知道数组在内存中是如何存取的我们可以通过打印数组中每个元素的地址来看看规律。
int main()
{int arr[6] { 1,2,3,4,5,6};int i 0;for (i 0; i 6; i){printf(arr[%d]的地址%p\n,i, arr[i]);}
}运行结果 我们会发现a[0]到a[5]的地址依次增大并且相邻两个数组元素相差4个字节为什么是4个字节呢那是因为我们定义的元素类型为int类型int类型的大小就是4个字节。我们就可以得出结论数组在内存中是连续存放的且随着下标的增大数组地址也增大。 6.sizeof求数组个数
在遍历数组的时候我们经常想知道数组的个数就可以sizeof操作符来求。 例如
int main()
{int arr[8] {0};printf(%d, sizeof(arr));
}结果 个数应该是8个为什么返回32呢其实是因为***sizeof计算的是数组所栈内存空间的总大小单位为字节。***如果要计算数组的个数只需要用 总内存空间/一个元素的内存
int main()
{int arr[8] {0};printf(%d, sizeof(arr)/sizeof(arr[0]));
}结果 输出结果为8个 7.二维数组
概率把一维数组作为数组的元素那么就是二维数组。 7.1 二维数组的创建
定义二维数组格式如下
type arr_name[常量值1][常量值2];
//例如
int a[3][5];//定义三行5列的数组7.2二维数组初始化
例如
int arr1[2][3]{1,2,3,4,5,6};//完全初始化
int arr2[2][3]{1,2,3};//不完全初始化,其他值默认为0
int arr3[2][3]{{1,2,3},{4,5,6}};//按照行初始化
int arr4[][3]{1,2,3,4};//初始化的时候行可以省略但是列一定不能省8.二维数组的使用
8.1二维数组的下标
一维数组的访问需要下标其实二维数组的访问也需要下标二维数组是有行有列的只要确定了行列就可以访问了。
int arr[2][3]{1,2,3,4,5,6};如下图 我们可以用arr[1][2]来表示6我们可以用arr[][1]来表示2 8.2 二维数组的打印
int main()
{
int arr[2][3]{1,2,3,4,5};
int i 0;
int j 0;
for(i0;i2;i)
{
for(j0;j3;j)
{printf(%d ,arr[i][j]);
}
printf(\n);
}
return 0;
}8.3 二维数组的输入
前面我们已经学习了一维数组的输入那么二维数组该怎么输入呢其实和一维数组很类似。 如下
int main()
{
int arr[2][3]{0};
int i 0;
int j 0;
for(i0;i2;i)
{for(j0;j3;j)
{scanf(%d ,arr[i][j]);
}
return 0;
}
}8.4二维数组在内存中的存储
在上述内容中我们已经得出结论一维数组在内存中是连续存放的且随着下标的增大数组地址也增大那二维数组是否也存在这样的规律呢 我们来进行验证
int main()
{int arr[2][3] { 1,2,3,4,5 };int i 0;int j 0;for (i 0; i 2; i){for (j 0; j 3; j){printf(arr[%d][%d] %p\n, i,j,arr[i][j]);} }return 0;
}结果如下 我们发现和一维数组一样二维数组在内存中是连续存放的且随着下标的增大数组地址也增大。 9. 总结 本篇文章主要介绍数组的概念一维数组的创建的初始化一维数组的使用一维数组在内存中的存储二维数组的创建和初始化二维数组的使用,有想法的同学可以通过本篇文章的知识来完成二分查找两边向中间输入等关于c语言的学习博主就先告一段了接下来将进行java的学习如果同学们想继续深入学习可以去看看其他博主的文章。