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

吉林省城乡建设官方网站中信建设有限责任公司标志

吉林省城乡建设官方网站,中信建设有限责任公司标志,有哪些做推送的网站,网络工程技术文章目录1 数组的访问方式1.1 数组的访问方式代码分析2 数组和指针不同3 a 和 a 的区别3.1 指针运算的经典代码案例分析4 数组作为函数的参数4.1 数组作为函数参数的代码案例分析5 总结开题问#xff1a;数组名可以当做常量指针使用。那么指针是否可以当做数组来使用? … 文章目录1 数组的访问方式1.1 数组的访问方式代码分析2 数组和指针不同3 a 和 a 的区别3.1 指针运算的经典代码案例分析4 数组作为函数的参数4.1 数组作为函数参数的代码案例分析5 总结 开题问数组名可以当做常量指针使用。那么指针是否可以当做数组来使用? 1 数组的访问方式 以下标的形式访问数组中的元素 以指针的形式访问数组中的元素 下标形式与指针形式的转换 对于上面的转换方式不要觉得奇怪。这是很正确的转换。 1.1 数组的访问方式代码分析 数组下标形式的访问我们很常见下面看一看不是很常见的访问形式; 代码 29-1.c #include stdio.hint main(){int a[5] {0};int* p a;int i 0;for(i0; i5; i){p[i] i1;}for(i0; i5; i){printf(a[%d] %d\n, i,*(ai));}printf(\n);for(i0; i5; i){i[a] i10;}for(i0; i5; i){printf(a[%d] %d\n,i, p[i]);}return 0; }编译运行结果为 可以看出 指针确实可以当做数组来使用访问数组可以通过下标形式与指针形式具体见上图中的转换公式。 2 数组和指针不同 虽然上面说了数组与指针都可以进行访问数组它们很相似但是数组与指针是不同的。在之前的文章中已经有过分析这里不再赘述直接看以前的文章【软件开发底层知识修炼】二十七 C/C中的指针与数组是不同的 3 a 和 a 的区别 a为数组首元素的地址a 为整个数组的地址a 和 a 虽然在数值上是相等的。但是它们的意义不同。在指针运算中存在差别 3.1 指针运算的经典代码案例分析 代码29-3.c #include stdio.hint main() {int a[5] {1, 2, 3, 4, 5};int* p1 (int*)(a 1); int* p2 (int*)((int)a 1);int* p3 (int*)(a 1);printf(%d, %d, %d\n, p1[-1], p2[0], p3[1]);return 0; }上述代码编译运行的结果为 5, 33554432, 3 我们暂且不看p2[0]的结果。 p1[-1] 表示当前指针指向的元素的前一的元素。因为 a 1 后是直接跨过可整个数组到了数组最后一个元素的下一个元素的位置。所以 p[-1] 5p3[1] 3很好理解。*(p3 1) 3 那么p2[0]到底是怎么回事 可以看下图的数组的内存图Linux 系统下的小端模型 上图就是数组a的内存模型在Linux系统的小端模式下。如果这个不懂那就没法往后看。a是数组首元素的地址a1 是第二个元素的地址这也很好理解(int)a 是将a这个常量指针转换为int型变量加入为tmp那么(int)a 1 就直接相当于这个tmp变量加1然后就到了如上图中的位置。然后(int*)((int)a 1) 又将其转换为指针。所以*p2 p2[0] 0x020000000x02000000转换为十进制的值是33554432 。到这里就应该没有什么疑问了 4 数组作为函数的参数 数组作为函数的参数的时候编译器会将其编译为对应的指针。 注意所以数组作为函数参数的时候必须将数组的个数也作为参数传进去否则在函数内无法计算数组的大小。 4.1 数组作为函数参数的代码案例分析 代码29-4.c #include stdio.hvoid func1(char a[5]){printf(In func1 sizeof(a)%d\n,sizeof(a));*a a;a NULL; //可以作为左值但是数组就不行 }void func2(char b[]){printf(In func2 sizeof(b)%d\n,sizeof(b));*b b;b NULL; //可以作为左值但是数组就不行 } int main(){char array[10] {0};func1(array);printf(In func1 array[0]%c\n, array[0]);func2(array);printf(In func2 array[0]%c\n, array[0]);return 0; }编译运行结果如下 分析 由上述代码看出当数组作为函数参数时在函数体内它的大小永远是4是因为它在编译的过程中退化为指针。在32系统中指针的大小总是4字节。并且可以看出数组作为函数参数的时候可以作为左值。但是数组就不可以作为左值这也充分说明数组作为函数参数的时候最终退化为指针指针是可以作为左值的。 5 总结 数组名和指针仅仅是使用方式相同。数组与指针的本质是不同的。数组名不是整个数组的地址它是数组首元素的地址数组作为函数参数的时候会被编译器编译为指针。
http://www.yutouwan.com/news/494339/

相关文章:

  • 建设外贸网站价格广东省网站备案系统
  • 网站必须做百度推广才能被别人搜到吗罗永浩做的网站
  • 泰兴网站建设邯郸市中小学健康管理平台登录
  • 公司做网站的原因好看的论坛网站模板
  • 安装iis8 添加网站wordpress文章摘要显示
  • 做犯法任务的网站查询网站服务器
  • 广州学建设网站网站名词
  • 微网站如何做微信支付宝支付宝电子商务网站建设与管理教案
  • php网站开发多线程开发国家工商企业查询系统
  • 网站文章内容排版要求easyui网站开发实战电子书
  • 海安网站设计湖南长沙解封通知最新
  • 广州番禺哪个公司建网站比较好衡水做网站建设
  • 山东房和城乡建设厅网站首页安徽网新科技网站建设介绍
  • pageadmin自助建站网站动态和静态
  • 网站的规划和建设新乡做网站多少钱
  • 网站备案快吗公众号会员卡管理系统
  • 网站建设一般涉及后台功能项目报价单模板
  • 建设旅游网站的工作方案做手机网站用什么软件
  • 查看网站国际联网备案号南通营销网站建设
  • 网站开发团队介绍小程序定制开发要多少钱
  • 自己建立一个网站新手网站建设教程
  • 山西城乡建设学校报名网站如何加强校园网站建设
  • 永州市规划建设局网站学会了php的语法怎么做网站
  • 如何开网站需要多少钱免费网站个人注册
  • 扁平化设计风格的网站模板免费下载南京图文制作中心
  • 网站模版idc成都装修公司前十口碑推荐
  • 公司内部网站建设奖励办法装修网站建设方案书
  • 天津外贸营销型网站建设桓台建设网站
  • 东莞百度网站快速优化漯河哪里做网站
  • 北仑建网站价格深圳网站维护公司