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

深圳动态科技集团网站免费自建app

深圳动态科技集团网站,免费自建app,广州工程造价信息网,上海网站建设公司网站建设大家好啊#xff0c;我是小象٩(๑ω๑)۶ 我的博客#xff1a;Xiao Xiangζั͡ޓއއ 很高兴见到大家#xff0c;希望能够和大家一起交流学习#xff0c;共同进步。 今天我们继续来复习指针… 目录 一、看一段代码二、 一维数组传参的本质三、冒泡排序3.1 基本思想四、二… 大家好啊我是小象٩(๑òωó๑)۶ 我的博客Xiao Xiangζั͡ޓއއ 很高兴见到大家希望能够和大家一起交流学习共同进步。 今天我们继续来复习指针… 目录 一、看一段代码二、 一维数组传参的本质三、冒泡排序3.1 基本思想四、二级指针4.1 基本概念 五、指针数组1 指针数组的定义 七、结尾 一、看一段代码 23 --32 arr[i] -- *(arri) i[arr] -- *(iarr)int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };//打印数组的内容使用指针int* p arr;int sz sizeof(arr) / sizeof(arr[0]);int i 0;//输出数组的内容//arr[i] -- *(arri)////[]就是一个操作符而已//for (i 0; i sz; i){//printf(%d , i[arr]);////printf(%d , i[p]);//?//printf(%d , *(i p));//printf(%d , p[i]);//*(pi) p[i]//*(pi) p[i] --- *(ip) i[p]//printf(%d , *(pi));}return 0; }本质 arr[i] -- *(arri) 二、 一维数组传参的本质 在 C 语言中一维数组传参的本质是传递数组首元素的地址而非整个数组的副本。 数组我们学过了之前也讲了数组是可以传递给函数的我们讨论 一下数组传参的本质。 首先从一个问题开始我们之前都是在函数外部计算数组的元素个数那我们可以把数组传给一个数后函数内部求数组的元素个数吗 #include stdio.h void test(int arr[]) {int sz2 sizeof(arr) / sizeof(arr[0]);printf(sz2 %d\n, sz2); } int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int sz1 sizeof(arr) / sizeof(arr[0]);printf(sz1 %d\n, sz1);test(arr);return 0; } 通过结果我们发现在函数内部是没有正确获得数组的元素个数。 我们知道数组名是数组首元素的地址那么在数组传参的时候传递的是数组名也就是说本质上数组传参传递的是数组首元素的地址。 所以函数形参的部分理论上应该使用指针变量来接收元素的地址。**那么在函数内部我们写sizeof(arr) 计算的是一个地址的大小单位字节而不是数组的大小单位字节。**正是因为函数的参数部分是本质是指针所以在函数内部是没办法求的数组元素个数的。 void test(int arr[])//参数写成数组形式本质上还是指针 {printf(%d\n, sizeof(arr)); } void test(int* arr)//参数写成指针形式 {printf(%d\n, sizeof(arr));//计算⼀个指针变量的⼤⼩ } int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };test(arr);return 0; } 总结一维数组传参形参的部分可以写成数组的形式也可以写成指针的形式。 三、冒泡排序 3.1 基本思想 冒泡排序Bubble Sort是一种简单的排序算法通过重复遍历待排序的数组依次比较相邻元素的值若顺序错误例如升序时前一个元素大于后一个元素则交换它们的位置。每一轮遍历会将当前未排序部分的最大或最小元素“冒泡”到其正确的位置。 冒泡排序的核心思想就是两两相邻的元素进行比较。 //⽅法1 void bubble_sort(int arr[], int sz)//参数接收数组元素个数 {int i 0;for (i 0; i sz - 1; i){int j 0;for (j 0; j sz - i - 1; j){if (arr[j] arr[j 1]){int tmp arr[j];arr[j] arr[j 1];arr[j 1] tmp;}}} } 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);int i 0;for (i 0; i sz; i){printf(%d , arr[i]);}return 0; } //⽅法2 - 优化 void bubble_sort(int arr[], int sz)//参数接收数组元素个数 {int i 0;for (i 0; i sz - 1; i){int flag 1;//假设这⼀趟已经有序了int j 0;for (j 0; j sz - i - 1; j){if (arr[j] arr[j 1]){flag 0;//发⽣交换就说明⽆序int tmp arr[j];arr[j] arr[j 1];arr[j 1] tmp;}}if (flag 1)//这⼀趟没交换就说明已经有序后续⽆序排序了break;} } 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);int i 0;for (i 0; i sz; i){printf(%d , arr[i]);}return 0; }数组传参的时候传递是数组首元素的地址 1.函数的形参可以写成数组也可以写成指针 2.所以在函数内没办法计算数组的元素个数 3.所以形参的数组和实参的数字是同一个数组 void bubble_sort(int arr[], int sz) {int i 0;//趟数for(i 0; i sz-1; i){int flag 0;//假设已经有序//处理一趟排序的过程 - 处理多少对数据for (int j 0; j sz-1-i; j){if (arr[j] arr[j 1]){flag 1;int tmp arr[j];arr[j] arr[j 1];arr[j 1] tmp;}}if (flag 0){break;}} }void print_arr(int arr[], int sz) {int i 0;for (i 0; i sz; i){printf(%d , arr[i]);}printf(\n); }int main() {//3,1,7,5,8,9,0,2,4,6//排序 - 排成升序//int arr[] {9,8,7,6,5,4,3,2,1,0};int arr[] {1,2,3,4,5,6,7,8,9,10};//冒泡排序int sz sizeof(arr) / sizeof(arr[0]);print_arr(arr, sz);bubble_sort(arr, sz);print_arr(arr, sz);return 0; }四、二级指针 4.1 基本概念 指针的指针二级指针**是指向指针的指针。 层级关系二级指针存储的是一级指针的地址而一级指针存储的是变量的地址。 指针变量也是变量是变量就有地址那指针变量的地址存放在哪里 这就是二级指针 。 对于二级指针的运算有 • *ppa 通过对ppa中的地址进行解引用这样找到的是 pa *ppa 其实访问的就是 pa int b 20; *ppa b;//等价于 pa b;**ppa 先通过 *ppa 找到 pa ,然后对 pa 进行解引用操作 *pa 那找到的是 a **ppa 30; //等价于*pa 30; //等价于a 30;五、指针数组 C语言中的指针数组是一种特殊的数组其元素都是指针类型。每个元素可以指向不同类型或相同类型的数据常用于管理多个地址如字符串数组、动态内存分配等。 指针数组是指针还是数组 我们类比一下整型数组是存放整型的数组字符数组是存放字符的数组。 那指针数组呢是存放指针的数组。 1 指针数组的定义 语法数据类型 *数组名[数组长度]; 特点数组的每个元素都是一个指针需单独初始化后才能使用。 示例 int *ptr_arr[5]; // 定义一个包含5个整型指针的数组 char *str_arr[3]; // 定义一个包含3个字符指针的数组指针数组的每个元素是地址又可以指向一块区域。 七、结尾 这一课的内容就到这里了下节课继续学习指针的其他一些知识 如果内容有什么问题的话欢迎指正有什么问题也可以问我
http://www.hkea.cn/news/14382009/

相关文章:

  • 云南旅行社网站建设怎么样免费做网站
  • 音乐网站建站网站建设ssc源码平台
  • google 网站质量问题文化推广网站建设心得
  • 动易网站模板创建电子商务网站的7个步骤
  • 医疗机构网站模板淘宝seo软件
  • 适合网站开发的浏览器写男主重生做网站的小说
  • 好的网站样式安顺网站开发公司
  • 网站seo诊断技巧浏览器网址导航网
  • 光谷软件园网站建设wordpress 网站运行时间
  • 做百度移动端网站软件下载成都做网站设计哪家好
  • 药材网技术网站建设有没有免费做网站的
  • 建设视频网站费用万能证件生成器手机版
  • 中国企业公司网站建设关联词有哪些小学
  • 网站专题报道页面怎么做的图书馆网站建设建议
  • 亚马逊网站开发者平台顺德公司做网站
  • 网站建设意味着什么企业网站的综合要求
  • 建筑模板的规格及价格福州百度快速优化排名
  • 永久免费网站怎么创建网站外链怎么发布
  • 价格优化网站建设网络营销的推广工具有哪些
  • 河西网站建设优化seo网站开发包含的项目和分工
  • 做超市促销海报哪个网站好免费空间和域名
  • 专业seo整站优化新网站上线怎么做seo
  • 接平面设计私活的网站北京给网站做系统的公司名称
  • 如何在百度上搜索到自己的网站在手机上怎么做app软件
  • 什么网站可以在图片上做超链接wordpress不同侧边栏
  • 购物网站设计说明网站制作网站建设需要多少钱
  • 定制网站模板wordpress 短代码嵌套
  • 青岛做门户网站的有哪些wordpress指定分类主动推送百度
  • 做网站需要基础吗广州地铁21号线
  • 怎样自己做代刷网站wordpress伪静态格式