智能锁东莞网站建设,php网站开发需要学什么软件,自定义网站主页设计,有机蔬菜网站是如何建设目录 导读1. 一维数组1.1 一维数组的创建1.2 数组的初始化1.3 一维数组的使用1.4 一维数组在内存中的存储 2. 二维数组2.1 二维数组的创建2.2 二维数组的初始化2.3 二维数组的使用2.4 二维数组在内存中的存储 博主有话说 导读
本篇主要讲解一维数组和二维数组的创建和使用还它们在内存中的存储 学习完数组之后我们可以来实现一个基于数组制作的小游戏——三子棋
1. 一维数组
一维数组是数组中最简单的它的元素只需要用数组名加一个下标就能唯一地确定。
1.1 一维数组的创建
数组是一组相同类型元素的集合。 数组的创建方式 type_t arr_name [const_n]; //type_t 是指数组的元素类型 //const_n 是一个常量表达式用来指定数组的大小 实例
int arr1[10];
char arr3[10];
float arr4[1];
double arr5[20];注意 常量表达式中可以包含常量和符号常量如 “ int a[35] ”是合法的。不能包含变量如 int count 10;int arr2[count];数组创建在C99标准之前[]中要给一个常量才可以不能使用变量。在C99标准支持了变长数 组的概念。
1.2 数组的初始化
数组的初始化是指在创建数组的同时给数组的内容一些合理初始值初始化
int arr1[10] {1,2,3};
//前三个元素赋值系统自动给后面的数初始化为0
int arr2[] {1,2,3,4};
//花括号中有4个数虽然没有在方括号中指定数组长度但是系统会根据花括号中数据的个数确定
int arr3[5] {1, 2, 3, 4, 5};1.3 一维数组的使用
对于数组的使用我们之前介绍了一个操作符[]下标引用操作符。它其实就数组访问的操作符。
int main()
{int arr[10] { 0 };//数组的不完全初始化//计算数组的元素个数int sz sizeof(arr) / sizeof(arr[0]);//数组的大小可以通过计算得到。//对数组内容赋值,数组是使用下标来访问的下标从0开始。所以int i 0;//做下标for (i 0; i 10; i)//这里写10好不好{arr[i] i;}//输出数组的内容for (i 0; i 10; i){printf(%d , arr[i]);}return 0;
}1.4 一维数组在内存中的存储
接下来我们探讨数组在内存中的存储。
int main()
{int arr[10] { 0 };int i 0;int sz sizeof(arr) / sizeof(arr[0]);for (i 0; i sz; i){printf(arr[%d] %p\n, i, arr[i]);//打印地址}return 0;
}仔细观察输出的结果我们知道随着数组下标的增长元素的地址也在有规律的递增。 由此可以得出结论数组在内存中是连续存放的。
2. 二维数组
二维数组常称为矩阵。把二维数组写成行和列的排列形式可以有助于形象化的理解二维数组的逻辑结构。
2.1 二维数组的创建 type_t arr_name [const_n][const_m]; 类型说明符 数组名[常量表达式1][常量表达式2] 实例
int arr[3][4];
char arr[3][5];
double arr[2][4];2.2 二维数组的初始化
可以将所有数据写在一个花括号内按数组元素在内存中的排序对个元素赋值分行给二维数组赋值二维数组如果有初始化行可以省略列不能省略
//数组初始化
int arr[3][4] {1,2,3,4};
int arr[3][4] {{1,2},{4,5}};
int arr[][4] {{2,3},{4,5}};2.3 二维数组的使用
二维数组的使用也是通过下标的方式。
int main()
{int arr[3][4] { 0 };int i 0;for (i 0; i 3; i){int j 0;for (j 0; j 4; j){arr[i][j] i * 4 j;}}for (i 0; i 3; i){int j 0;for (j 0; j 4; j){printf(%d , arr[i][j]);}}return 0;
}2.4 二维数组在内存中的存储
像一维数组一样这里我们尝试打印二维数组的每个元素。
int main()
{int arr[3][4];int i 0;for (i 0; i 3; i){int j 0;for (j 0; j 4; j){printf(arr[%d][%d] %p\n, i, j, arr[i][j]);}}return 0;
}通过结果我们可以分析到其实二维数组在内存中也是连续存储的
博主有话说
目前数组的讲解就到这里后续的有关数组越界问题字符数组数组做函数参数等内容我们下次再继续还有更多例题讲解