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

用vs做html网站烘焙甜点培训学校

用vs做html网站,烘焙甜点培训学校,wordpress主题备案号,网站建设手机官网在指针浅谈(二)http://t.csdnimg.cn/SKAkD中我们讲到了const修饰指针、指针运算、野指针、assert断言和传址调用的内容#xff0c;今天我们继续学习有关数组名、指针访问数组、一维数组传参的本质相关的内容#xff0c;内容比较深入#xff0c;如果觉得哪里讲解的不行#…     在指针浅谈(二)http://t.csdnimg.cn/SKAkD中我们讲到了const修饰指针、指针运算、野指针、assert断言和传址调用的内容今天我们继续学习有关数组名、指针访问数组、一维数组传参的本质相关的内容内容比较深入如果觉得哪里讲解的不行可以参考其他大佬的文章呦。 1.数组名的理解 在之前我们使用指针访问数组时有以下代码 int arr[10]{1,2,3,4,5,6,7,8,9,10}; int* parr[0]; 这里arr[0]表示取出数组第一个元素的地址赋给指针变量p但是你看下面这个代码和运行结果 #includestdio.h int main() {int arr[10]{1,2,3,4,5,6,7,8,9,10};printf(arr[0]%p\n,arr[0]);printf(arr%p,arr);return 0; } 你会神奇的发现wc这出错了吧这怎么可能数组名的地址怎么能和数组第一个元素的地址相同呢但事实上数组名就是数组首元素的地址。 这时候倘若我放出下面这段代码阁下该如何应对 #include stdio.h int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf(%d\n, sizeof(arr));return 0; }我直接懵逼了到底哪个是对的其实两个都是对的数组名确实是数组首元素的地址但在两个情况下是例外的 1sizeof(数组名):sizeof中放数组名数组名表示整个数组计算整个数组的大小。 2数组名这里的数组名表示整个数组取出的是整个数组的地址这和首元素的地址是有区别的。区别就在于下面这段代码 #include stdio.h int 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]和arr[0]1相差4个字节arr和arr1相差4个字节这是我们意料之中的毕竟数组名是数组首元素的地址但arr和arr1相差40个字节这是因为arr是数组的地址1之后直接跳过整个数组虽然它和数组首元素地址相同但区别就在于指针-运算跳过的多少。 总的来说数组名是数组首元素的地址但是有sizeof和数组名两个意外。 2.使用指针访问数组 讲的是指针那我们就要用指针已经知道了这么多关于数组的知识就应该学习如何用指针访问数组。 #include stdio.h int 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);//也可以这样写//scanf(%d, arr[i]);//scanf(%d, p[i]);}//输出for(i0; isz; i){printf(%d , *(pi));printf(%d , p[i]);//或者这样写printf(%d , arr[i]);}return 0; } 这段代码怎么理解呢其实并不难将数组首元素的地址赋给了指针变量p那我们就可以访问整个数组毕竟数组是一段连续的存储空间知道了首元素地址就可以顺藤摸瓜找到其他元素运用指针运算遍历整个数组进行赋值因为数组首元素也是地址相当于一个指针所以也可以写成arri等价于arr[i]。其实数组名arr和p在这里等价所以也可以是p[i]输出时我们需对指针变量解引用获取元素值即可。 3.一维数组传参的本质 我们知道数组是可以传递给函数的那数组是把自己所有元素全部传过去吗显然不是在早期的计算机设备中内存是很小的如果一下传很多元素过去会很占用内存效率低下那数组是怎么传过去呢下面就让我们了解一下。 之前我们都是在函数外部计算数组的元素个数那能不能在函数内部进行求解呢 #include stdio.h void test(int arr[])//形参也可以写成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)计算的是一个地址的大小不是数组的大小正是因为这样我们在函数内部是没有办法求数组元素个数的。 今天的指针先讲到这里下期再见
http://www.zqtcl.cn/news/342236/

相关文章:

  • C2C电商网站重庆市渝快办官网
  • 青岛建设局网站首页青岛互联网企业排名
  • 网站文章怎么做分享qq做网站傻瓜
  • 自媒体专用网站免费产品推广文案100字
  • 阜阳专业网站建设上海南桥网站建设
  • 网站默认图片阳春做网站
  • 怎么自己做网站排名福州朝阳房产网站建设
  • 贵州建网站红动中国免费素材网
  • 公益网站建设婚庆网站开发的意义
  • 徐州网站建设案例南京设计网站
  • 培训网站欣赏网站开发进度管理表
  • 网站开发工程师考试平面设计实例网站
  • ftp更换网站备案密码如何登录添加网站
  • 钢球 东莞网站建设做网站用vue吗
  • 青岛网站建设制作公司制作视频软件哪个免费
  • 用flash做的网站欣赏承德住房和城乡建设局网站关闭了
  • 做网站引流的最佳方法施工企业高级工程师土建答辩
  • 成都优创智汇网站建设旅游网站网页设计代码
  • 郑州冬青街 网站建设网站seo技巧
  • 网站定制公司推荐外包公司怎么样
  • 深圳做网站要网站制作能在家做吗
  • 设计国外网站深圳外贸网站推广
  • wordpress首页文章分类展示站长工具seo综合查询引流
  • 整网站代码 带数据 免费 下载株洲网站的建设
  • 邢台学校网站建设价格个人博客首页
  • php做网站优势wordpress导航图片尺寸
  • 西安商城网站建设咪豆com域名表示的是什么机构
  • 网站如何申请微信支付接口织梦中英文网站源码
  • 礼县住房和城乡建设局网站化妆品的网站设计方案
  • 做外汇网站代理公关团队