当前位置: 首页 > news >正文

ppt模板之家官网吉林seo网络推广

ppt模板之家官网,吉林seo网络推广,淄博临淄网站建设,郑州app网站公司1. 一维数组的创建和初始化 1.1 数组的创建 数组是一组相同类型元素的集合。 数组的创建方式#xff1a; type_t arr_name [const_n]; //type_t 是指数组的元素类型 //const_n 是一个常量表达式#xff0c;用来指定数组的大小 数组创建的实例#xff1a; //代码1 int a…1. 一维数组的创建和初始化 1.1 数组的创建 数组是一组相同类型元素的集合。 数组的创建方式 type_t arr_name [const_n]; //type_t 是指数组的元素类型 //const_n 是一个常量表达式用来指定数组的大小 数组创建的实例 //代码1 int arr1[10]; //代码2 int count 10; int arr2[count];//数组时候可以正常创建 //代码3 char arr3[10]; float arr4[1]; double arr5[20]; 注数组创建在C99标准之前 [] 中要给一个常量才可以不能使用变量。在C99标准支持了变长数组的概念。 1.2 数组的初始化 数组的初始化是指在创建数组的同时给数组的内容一些合理初始值初始化。 看代码 第一种初始化被称为不完全初始化因为只初始化了一部分那么剩余的一部分就会默认初始化为0。 第二种初始化则默认这个数组为4个元素。 第三种则是标准的初始化。 第四种是字符数组可以理解为这个数组里面放了三个字符98的ASCLL码值为abc。 第五种则是默认3个元素的字符数组。 第六种是使用字符串进行初始化和第五种的区别在于字符串末尾会有一个\0。 int arr1[10] {1,2,3}; int arr2[] {1,2,3,4}; int arr3[5] {12345} char arr4[3] {a,98, c}; char arr5[] {a,b,c}; char arr6[] abcdef; 数组在创建的时候如果想不指定数组的确定的大小就得初始化。数组的元素个数根据初始化的内容来确定。 但是对于下面的代码要区分内存中如何分配。 char arr1[] abc; char arr2[3] {a,b,c}; 1.3 一维数组的使用 对于数组的使用我们之前介绍了一个操作符 [] 下标引用操作符。它其实就数组访问的操作符。 我们来看代码 #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h 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; } 需要注意的是下标是从0开始的所以i10则是10次。 总结: 1. 数组是使用下标来访问的下标是从0开始。 2. 数组的大小可以通过计算得到。 int arr[10]; int sz sizeof(arr)/sizeof(arr[0]); 1.4 一维数组在内存中的存储 接下来我们探讨数组在内存中的存储。 看代码 #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h 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; } 在x86的环境下结果是这样的 仔细观察输出的结果我们知道随着数组下标的增长元素的地址也在有规律的递增。为什么差的是4呢因为一个整形元素是4个字节每个字节都有一个地址。由此可以得出结论数组在内存中是连续存放的。 数组的这种布局是为了内存的访问因为当我们知道了一个数组的起始位置往后遍历就能找到后面的所有元素为使用指针访问数组带来了很大的便利。 2. 二维数组的创建和初始化 2.1 二维数组的创建 二维数组相当于存放行和列。 //数组创建 int arr[3][4]; char arr[3][5]; double arr[2][4]; 2.2 二维数组的初始化 第二种初始化相当于{1200}{4500}{0000}。 //数组初始化 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 二维数组的使用 二维数组的使用也是通过下标的方式。 看代码 #define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h 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 二维数组在内存中的存储 像一维数组一样这里我们尝试打印二维数组的每个元素。 #define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h 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; } 通过结果我们可以分析到其实二维数组在内存中也是连续存储的二维数组存储的时候是存完第一行再存第二行。 3. 数组越界 数组的下标是有范围限制的。 数组的下规定是从0开始的如果数组有n个元素最后一个元素的下标就是n-1。 所以数组的下标如果小于0或者大于n-1就是数组越界访问了超出了数组合法空间的访问。 C语言本身是不做数组下标的越界检查编译器也不一定报错但是编译器不报错并不意味着程序就是正确的所以程序员写代码时最好自己做越界的检查。 #define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int i 0;for (i 0; i 10; i){printf(%d\n, arr[i]);//当i等于10的时候越界访问了}return 0; } 这就属于数组的越界访问了因为这个数组是10个元素但是却访问了11次。 4. 数组作为函数参数 往往我们在写代码的时候会将数组作为参数传个函数比如我要实现一个冒泡排序函数, 将一个整形数组排序。 那我们将会这样使用该函数 4.1 冒泡排序函数的错误设计   #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h void sort(int arr[]) {int i 0;int sz sizeof(arr) / sizeof(arr[0]);for (i 0; i sz - 1; i){int j 0;for (j 0; j sz - 1 - i; j){if (arr[j] arr[j 1]){int tmp arr[j];arr[j] arr[j 1];arr[j 1] tmp;}}} } //冒泡排序 //降序 int main() {int arr[] { 1,2,3,4,5,6,7,8,9,10 };sort(arr);int i 0;for (i 0; i 10; i){printf(%d , arr[i]);}return 0; }当我们这样去设计函数就会发现答案是错误的。 4.2 数组名是什么 #include stdio.h int main() {int arr[10] {1,23,4,5};printf(%p\n, arr);printf(%p\n, arr[0]);printf(%d\n, *arr);//输出结果return 0; } 数组名是数组首元素的地址。有两个例外 1. sizeof(数组名)计算整个数组的大小sizeof内部单独放一个数组名数组名表示整个数 组。 2. 数组名取出的是数组的地址。数组名数组名表示整个数组。 除此1,2两种情况之外所有的数组名都表示数组首元素的地址。 4.3 冒泡排序函数的正确设计 当数组传参的时候实际上只是把数组的首元素的地址传递过去了。 所以即使在函数参数部分写成数组的形式 int arr[] 表示的依然是一个指针 int *arr 。 那么函数内部的 sizeof(arr) 结果是4。 #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h void bubble_sort(int arr[], int sz)//参数接收数组元素个数 {//代码同上面函数 } int main() {int arr[] { 3,1,7,5,8,9,0,2,4,6 };int sz sizeof(arr) / sizeof(arr[0]);bubble_sort(arr, sz);//是否可以正常排序for (i 0; i sz; i){printf(%d , arr[i]);}return 0; } 这才是正确的冒泡排序函数方法我们把元素个数作为参数传给函数。 5. 数据实例 5.1 数组的应用实例1三子棋 http://t.csdn.cn/OEdsa 5.2 数组的应用实例2扫雷 http://t.csdn.cn/6NpQq 我的这两篇文章有详解哦欢迎大家阅读。 今天的分享到这里就结束啦感谢烙铁们的阅读让我们下一篇文章再见下一篇文章会详细的给大家讲解操作符哦
http://www.dnsts.com.cn/news/16434.html

相关文章:

  • 网站怎么做架构国际外贸网络交易平台
  • 深圳制作网站的公司wordpress菜单是什么
  • 网站数据分析工具口碑好网络营销电话
  • 宝洁公司网站做的怎么样优化大师win7
  • 做电影分享网站违法吗花店网站模板
  • 网站建设响应东莞竞价推广
  • 福州网站建设市场wordpress自动缩进
  • iis服务器怎么部署php网站网站开发时
  • 海尔网站的建设目标苏州小程序开发制作公司
  • 做外贸搜索外国客户的网站嘉兴网页设计
  • 广东省建筑网站网站推广报告
  • 视频网站切片怎么做广告片拍摄的重要性
  • 江西网站备案要求网络厂商有哪些
  • 简洁企业网站asp怎么破解网站后台
  • 可以做超大海报的网站seo企业培训班
  • 北京的做网站公司如何设置便于搜索引擎收录的网站结构
  • 平面设计鉴赏网站南山做网站价格
  • 物流网站建设平台3d室内设计软件
  • 旅行社网站规划与建设的流程51做图片的网站
  • 泰安 网站建设公司广州外贸网络推广
  • 服务好的企业网站怎么建设中国纪检监察报官首页
  • 做微课常用的网站张掖交通建设投资有限责任公司网站
  • 女装网站建设规划书怎么写小说搜索风云榜
  • 泉州网站建设服务wordpress ppt预览
  • 建个公司网站需要多少钱建设网站选择主机时费用最昂贵的方案是
  • 网站平台开发与应用面试泉州找工作网站
  • 有什么做视频的免费素材网站好技术开发包括哪些内容
  • 锡山建设局网站秒收录网站有哪些
  • 深圳网站维护优化wordpress寻模板
  • 网站开发项目流程android开发 wordpress