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

云南网站制作一条龙网站建设公司对比分析报告

云南网站制作一条龙,网站建设公司对比分析报告,北京做网站建设的公司哪家好,网页设计下载免费#x1f388;个人主页#xff1a;JAMES别扣了 #x1f495;在校大学生一枚。对IT有着极其浓厚的兴趣 ✨系列专栏目前为C语言初阶、后续会更新c语言的学习方法以及c题目分享. #x1f60d;希望我的文章对大家有着不一样的帮助#xff0c;欢迎大家关注我#xff0c;我也会回… 个人主页JAMES别扣了 在校大学生一枚。对IT有着极其浓厚的兴趣 ✨系列专栏目前为C语言初阶、后续会更新c语言的学习方法以及c题目分享. 希望我的文章对大家有着不一样的帮助欢迎大家关注我我也会回关大家一起交流一起互动感谢大家的多多支持哈 欢迎 点赞✍评论⭐收藏 前言 指针在C语言的版块中是有着极其重要的作用通过两篇关于指针基础文章以及读者不断的代码实现可以很好掌握指针的基础知识接下来我将结合C语言中数组方面的知识给读者们展示不一样的指针内容这个系列文章我会写三篇左右谢谢大家支持哈 往期相关内容高质量文章93质量分 C语言数组一篇文章让你秒懂基础!-CSDN博客 C语言指针(上)一篇文章让你秒懂基础-CSDN博客 C语言指针下一篇文章让你秒懂基础5000字-CSDN博客 1.数组名的理解 在之前的数组文章中我们一起探讨过数组的基本知识现在让我们更深一步理解数组的相关概念。 这⾥我们使⽤ arr[0] 的⽅式拿到了数组第⼀个元素的地址但是其实数组名本来就是地址⽽且 是数组⾸元素的地址我们来做个测试。 #include stdio.hint main(){int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf(arr[0] %p\n, arr[0]);printf(arr %p\n, arr)return 0 } 输出结果 我们发现数组名和数组⾸元素的地址打印出的结果⼀模⼀样数组名就是数组⾸元素(第⼀个元素)的地 址。 这时候有读者会有疑问数组名如果是数组⾸元素的地址那下⾯的代码怎么理解呢 #include stdio.hint main(){int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf(%d\n, sizeof(arr));return 0;} 输出的结果是40如果arr是数组⾸元素的地址那输出应该的应该是4/8才对。 其实数组名就是数组⾸元素(第⼀个元素)的地址是对的但是有两个例外 • sizeof(数组名)sizeof中单独放数组名这⾥的数组名表⽰整个数组计算的是整个数组的⼤⼩ 单位是字节 • 数组名这⾥的数组名表⽰整个数组取出的是整个数组的地址整个数组的地址和数组⾸元素 的地址是有区别的 除此之外任何地⽅使⽤数组名数组名都表⽰⾸元素的地址。 这时有好奇的同学在试⼀下这个代码 #include stdio.hint main(){int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf(arr[0] %p\n, arr[0]);printf(arr %p\n, arr);printf(arr %p\n, arr);return 0哈哈这时会有读者问那么arr与arr有什么区别么 #include stdio.hint main(){int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf(arr[0] %p\n, arr[0]);printf(arr[0]1 %p\n, arr[0]1); printf(arr %p\n, arr);printf(arr1 %p\n, arr1); printf(arr %p\n, arr); printf(arr1 %p\n, arr1); return 0;}输出结果 arr[0] 0077F820 arr[0]1 0077F824 arr0077F820 arr10077F824 arr0077F820 arr1 0077F848 这⾥我们发现arr[0]和arr[0]1相差4个字节arr和arr1相差4个字节是因为arr[0]和arr都是 ⾸元素的地址1就是跳过⼀个元素。 但是arr和arr1相差40个字节这就是因为arr是数组的地址1操作是跳过整个数组的。 到这⾥⼤家应该搞清楚数组名的意义了吧。  2. 使⽤指针访问数组 有了前⾯知识的⽀持再结合数组的特点我们就可以很⽅便的使⽤指针访问数组了。 #include stdio.hint main(){int arr[10] {0}; //输⼊int i 0;int sz sizeof(arr)/sizeof(arr[0]); //输⼊int* p arr;for(i0; isz; i){scanf(%d, pi);//scanf(%d, arri);//也可以这样写} //输出for(i0; isz; i){printf(%d , *(pi));}return 0;} 这个代码搞明⽩后我们再试⼀下如果我们再分析⼀下数组名arr是数组⾸元素的地址可以赋值 给p其实数组名arr和p在这⾥是等价的。那我们可以使⽤arr[i]可以访问数组的元素那p[i]是否也可 以访问数组呢 #include stdio.hint main(){int arr[10] {0}; //输⼊int i 0;int sz sizeof(arr)/sizeof(arr[0]); //输⼊int* p arr;for(i0; isz; i){scanf(%d, pi);//scanf(%d, arri);//也可以这样写} //输出for(i0; isz; i){printf(%d , p[i]);}return 0;} 将*(pi)换成p[i]也是能够正常打印的所以本质上p[i]是等价于*(pi)。 同理arr[i] 应该等价于*(arri)数组元素的访问在编译器处理的时候也是转换成⾸元素的地址偏移 量求出元素的地址然后解引⽤来访问的。 3. ⼀维数组传参的本质 数组我们学过了之前也讲了数组是可以传递给函数的这个⼩节我们讨论⼀下数组传参的本质。 ⾸先从⼀个问题开始我们之前都是在函数外部计算数组的元素个数那我们可以把函数传给⼀个函 数后函数内部求数组的元素个数吗 #include stdio.hvoid 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;}{ 结论⼀维数组传参形参的部分可以写成数组的形式也可以写成指针的形式。 4.⼆级指针 指针变量也是变量是变量就有地址那指针变量的地址存放在哪⾥答案是更高级别的指针 这就是 ⼆级指针。 对于⼆级指针的运算有 1.*ppa 通过对ppa中的地址进⾏解引⽤这样找到的是  int b 20; *ppa b;// 等价于 pa b; pa *ppa 其实访问的就是 pa . 2.**ppa 先通过 *ppa 找到 pa ,然后对pa进行解应用操作*pa那找到的是a。 **ppa 30; // 等价于 *pa 30; // 等价于 a 30; 5. 指针数组 指针数组是指针还是数组 我们类⽐⼀下整型数组是存放整型的数组字符数组是存放字符的数组。 那指针数组呢是存放指针的数组. 指针数组的每个元素都是⽤来存放地址指针的。 如下图 指针数组的每个元素是地址⼜可以指向⼀块区域. 6. 指针数组模拟⼆维数组 #include stdio.hint main(){int arr1[] {1,2,3,4,5};int arr2[] {2,3,4,5,6};int arr3[] {3,4,5,6,7};//数组名是数组⾸元素的地址类型是int*的就可以存放在parr数组中int* parr[3] {arr1, arr2, arr3};int i 0;int j 0;for(i0; i3; i){for(j0; j5; j){printf(%d , parr[i][j]);}printf(\n);} return 0;} parr[i]是访问parr数组的元素parr[i]找到的数组元素指向了整型⼀维数组parr[i][j]就是整型⼀维数 组中的元素。 上述的代码模拟出⼆维数组的效果实际上并⾮完全是⼆维数组因为每⼀⾏并⾮是连续的。 总结 C语言中数组与指针的深入探索 在C语言编程中数组和指针是两个紧密相关的概念。数组是一种数据结构用于存储相同类型的元素集合而指针则是一种变量用于存储另一个变量的内存地址。理解数组和指针之间的关系对于深入掌握C语言至关重要。 一、数组名的理解 在C语言中数组名实际上是一个指向数组首元素的常量指针。这意味着数组名本身并不表示整个数组而是指向数组第一个元素的地址。因此我们不能对数组名进行赋值操作但可以获取其地址或进行解引用操作。 二、使用指针访问数组 通过指针我们可以直接访问数组中的元素。假设我们有一个整型数组int arr[5];我们可以使用指针int *p arr;来指向数组的首元素。此时*p就表示数组的第一个元素*(p1)表示第二个元素以此类推。通过这种方式我们可以遍历整个数组。 三、一维数组传参的本质 在C语言中当我们将一维数组作为参数传递给函数时实际上传递的是数组首元素的地址。因此函数内部接收到的参数实际上是一个指针指向数组的首元素。这使得我们可以在函数内部通过指针来访问和修改数组的元素。 四、二级指针 二级指针是指向指针的指针。它的声明形式为int **pp;其中pp是一个指向整型指针的指针。二级指针常用于动态内存分配、函数返回多个值以及处理指针数组等场景。 五、指针数组 指针数组是指数组的每个元素都是指针。例如int *pArr[5];表示一个包含5个整型指针的数组。每个指针可以指向一个整型变量或整型数组的首元素。指针数组常用于存储多个字符串的地址或处理多个动态分配的数组。 六、指针数组模拟二维数组 在C语言中二维数组在内存中是连续存储的但我们可以使用指针数组来模拟二维数组的行为。通过为每个指针分配一个一维数组我们可以创建一个不规则的“二维数组”。这种方式在处理稀疏矩阵或动态调整数组大小时非常有用。 通过上述内容的阐述我们可以看到数组和指针在C语言中的紧密关系。理解并掌握这些知识点不仅有助于我们更加灵活地操作数组和指针还能提升我们的编程能力和代码质量。希望本文对你有所帮助祝你学习进步
http://www.pierceye.com/news/857669/

相关文章:

  • 学校网站建设成功案例微信公众号网站导航怎么做
  • 重庆汽车网站建设建立大安全大应急框架
  • 重庆模板建站定制网站做企业网站到哪里找
  • asp技术做网站网站建设推广是什么工作室
  • 运营公众号还是做网站室内装修设计软件哪个好用
  • 卖营销软件的网站如何利用站群做网站
  • 网站空间价格怎么算网站制作与发布
  • 做网站的动态图片廊坊做网站哪家好
  • 建设企业网站报价怎么做网站logo
  • 企业类网站谷歌seo招聘
  • asp.net网站安装顺序idc 公司网站模板
  • 新手学做网站优化2022app分类排行
  • 微信微网站制作公司2008年做的网站
  • 网站建设柒首先金手指1男孩做网站
  • 葫芦岛市建设局网站网页制作与网站发布
  • 企业网站首页布局尺寸营销网站建设哪家便宜
  • 专题网站建设策划郑州市做网站的公
  • wordpress網頁版天津百度网站排名优化
  • 做网站建设销售工资代做电大网站ui作业
  • DMZ做网站wordpress 小工具 创建
  • 宠物网站建设方案外贸网站建设公司服务
  • 玉林网站建设学校门户网站建设的意义
  • 湖南营销型网站建设 在线磐石网络现在出入河南最新规定
  • 阿里云虚拟主机网站国内十大mcn公司
  • c 做网站起什么作用电商建站系统
  • wordpress 网站 上传微信公众平台直接上传wordpress
  • 北滘高明网站建设电子商城网站建设价格
  • 根据一个网站仿做新网站是什么网站代理公司注册收费
  • 创业给企业做网站开发青岛公司建设网站
  • 银川网站建设联系电话郑州网站建设廴汉狮网络