C语言数组的创建和使用
C语言数组的创建和使用
- 数组是一组相同类型元素的集合。
一维数组的创建及初始化
//创建int类型的数组 //直接创建:不对数组进行初始化 int arr1[10]; //最常用、好用的创建方式 int arr2[10] = { 0 }; //所有元素都被初始化为0 //完全初始化,创建时对每个元素都进行初始化 int arr3[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; //不完全初始化,创建时只对其中几个元素进行初始化,其余元素默认被初始化为0 int arr4[10] = { 0, 1, 2, 3, 4 }; //对指定元素进行初始化 int arr5[10] = { [5] = 6 }; //不指定元素个数,数组的大小由创建时初始化元素个数决定 int arr6[] = { 0, 1, 2 };
一维数组的使用
对这六个数组的元素进行逐个打印:
//Print the array void PrintArr(int sz ,int arr[]) { int i = 0; for (i = 0 ; i < sz ; i++) { printf("%d ", arr[i]); } printf("\n"); }
效果如下:
一维数组在内存中的存储形式
-
数组名为数组首元素地址
对刚才创建的六个数组的数组名进行打印
printf("%p\n",arr1); printf("%p\n",arr2); printf("%p\n",arr3); printf("%p\n",arr4); printf("%p\n",arr5); printf("%p\n",arr6);
结果如下:
- 数组在内存中是连续存放的。
对其中一个数组的元素的地址逐个打印:
int i = 0; for (i = 0; i < 10 ;i++ ) { printf("&arr1[%d] : %p\n", i, &arr1[i]); }
结果如下:
二维数组的创建及初始化
//直接创建:不对数组进行初始化 int arr7[3][4]; //完全初始化,创建时对每个元素都进行初始化 int arr8[3][4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; //不完全初始化,创建时只对其中几个元素进行初始化,其余元素默认被初始化为0 int arr9[3][4] = { 0, 1, 2, 3, 4, 5, 6 }; //所有元素都被初始化为0 int arr10[3][4] = { 0 }; int arr11[3][4] = { {0 , 1 } , { 3 , 4} } ;
二维数组的使用
对这五个二维数组的元素进行逐个打印:
int i, j; printf("arr7:\n"); for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { printf("%d ",arr7[i][j]); } printf("\n"); } ...
结果如下:
二维数组在内存中的存储形式
- 二维数组在内存中的存储形式逻辑上是这样的:
- 实际上和一维数组一样,是连续的
int i = 0; for(i = 0; i < 3; i++) { int j = 0; for (j = 0; j < 4; j++) { printf("&arr8[%d][%d] : %p\n", i, j, &arr8[i][j]); } }
结果如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】