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

提供手机网站制作公司网站开发具体问题

提供手机网站制作公司,网站开发具体问题,郑州管城建设网站,wordpress文章调用函数数组面试题解析 字符数组 (一) 我们上一篇文章学习了一维数组的面试题解析内容和字符数组的部分内容,我们这篇文章讲解一下字符数组和指针剩余面试题的解析内容,那现在,我们开始吧。 我们继续看一组字符数组的面试…

数组面试题解析

字符数组

(一)

我们上一篇文章学习了一维数组的面试题解析内容和字符数组的部分内容,我们这篇文章讲解一下字符数组和指针剩余面试题的解析内容,那现在,我们开始吧。

我们继续看一组字符数组的面试题:

char arr[] = "abcdef";printf("%d\n", strlen(arr));printf("%d\n", strlen(arr+0));printf("%d\n", strlen(*arr));printf("%d\n", strlen(arr[1]));printf("%d\n", strlen(&arr));printf("%d\n", strlen(&arr+1));printf("%d\n", strlen(&arr[0]+1));

 

首先,我们可以看到的是第三个和第四个没有,这是因为第三个和第四个代码是错的,当然不可能打印出来,具体细节请看下图: 

 

通过这张图我们可以看到,strlen的参数是指针类型,而在笔试题中,参数并不是指针,所以会报错。

接下来我们看第一个和第二个,这两个都是6,这是因为,arr和arr+0,他们两个都是代表的是数组首元素的地址,此时一共有6个元素(到\0之前)

第五个答案是6,虽然&arr代表的是整个数组的地址,但是他仍然指向的是数组的起始位置。

第六个是随机值,&arr+1代表已经跳过了这个数组,所以strlen会知道遇到\0才会停止,这个\0的位置是不可知的,所以才会是随机值。

第七个是5,这是因为&arr[0]+1代表的是数组第二个元素的地址,所以答案是5

(二)

char *p = "abcdef";printf("%d\n", sizeof(p));printf("%d\n", sizeof(p+1));printf("%d\n", sizeof(*p));printf("%d\n", sizeof(p[0]));printf("%d\n", sizeof(&p));printf("%d\n", sizeof(&p+1));printf("%d\n", sizeof(&p[0]+1));

 

首先,我们看除了三四的其他几个,答案都是8,其实应该是4/8,看过我们之前那篇文章的朋友应该知道为什么,因为是指针,代表的是地址的大小,而地址的大小是确定的,因为编译器环境选择的是x64,所以答案是8.

我们再看第三个和第四个,他们的答案都是1,这是因为他们代表的,都是一个字符的大小。都是字符串首字符的大小。

(三)

char *p = "abcdef";printf("%d\n", strlen(p));printf("%d\n", strlen(p+1));printf("%d\n", strlen(*p));printf("%d\n", strlen(p[0]));printf("%d\n", strlen(&p));printf("%d\n", strlen(&p+1));printf("%d\n", strlen(&p[0]+1));

 

其实这个情况产生的原因和第一题产生的原因是相同的,因为第三个和第四个代码本身发生了错误,我们在这里再次强调,strlen函数的参数是指针类型。而第三个和第四个传入的都是字符。所以代码发生错误。

二维数组

int a[3][4] = {0};printf("%d\n",sizeof(a));printf("%d\n",sizeof(a[0][0]));printf("%d\n",sizeof(a[0]));printf("%d\n",sizeof(a[0]+1));printf("%d\n",sizeof(*(a[0]+1)));printf("%d\n",sizeof(a+1));printf("%d\n",sizeof(*(a+1)));printf("%d\n",sizeof(&a[0]+1));printf("%d\n",sizeof(*(&a[0]+1)));printf("%d\n",sizeof(*a));printf("%d\n",sizeof(a[3]));

 

接下来,让我们一起来进行分析:

首先第一个是48,是4*12,因为a代表的是整个数组,一共有12个元素,每个元素是整型,大小是4个字节。

第二个是4,这个代表的是特定的数组元素,数量是一个,是整型,所以是4个字节。

第三个是16,这个代表的是二维数组第一行的元素,二维数组第一行一共有4个元素,每个元素都是整型,每个整型4个字节,所以一共有16个字节

第四个是8,应该是4/8,因为是地址嘛,这里的arr[0]代表的是第一行的地址。

第五个是4,这是因为代表的是数组第二行第一个元素,这个元素是Int类型,所以大小是4个字节

第六个是8,代表的是跳过这个数组之后的地址,应该是4/8,因为地址的大小是固定的。

第七个是16,这是因为他代表的是数组第二行的元素的大小,一共4个元素,每个元素4个字节,所以一共有16个字节

第八个是8,应该是4/8,这是因为此时代表的是数组第二行的地址

第9,10个是16,这是因为第九个表示数组第二行的元素,第十个表示数组第一行的元素,每一行有4个元素,每个元素是4个字节,所以一共有16个字节

第十一个答案是16,你们感到很奇怪吗,因为数组第四行是不存在的,但是着这里的话,是不存在越界的说法的,这是因为sizeof内部的表达式并不会真实的计算

 

 

 

http://www.yayakq.cn/news/828492/

相关文章:

  • 网上做石材去哪个网站网站备案的好处
  • 做网站支付系统难度靖江市属于哪里有做网站的
  • 兰州最好的网站建设公司哪家好昆山建设工程交易网站
  • 制作门户网站安福网站制作
  • c 能用来做网站网店推广的作用是
  • 企业网站开发 流程请人做阿里巴巴网站需要注意
  • h5 网站建设seo公司多少钱
  • 浙江建设三类人员报名网站wordpress 商城模版
  • 济南建网站app湖南省新闻最新消息十条
  • 旅游门户网站模板wordpress文章分享代码
  • 建站还有前途么建设银行网站解除绑定
  • 香水网站开源模板网站开发文档编写
  • 做网站公司介绍ppt搭建一个网站的基本流程
  • 湖南网站建设开发公司放心网站推广优化咨询
  • ae模板下载网站推荐网页制作的公司为什么瓯北没有
  • 网站建设管理工作的总结怎样给自己的网站做优化
  • 2003网站服务器建设中wordpress app 生成
  • 平台网站建设公司百度一下你就知道了主页
  • 电商网站设计思想适合html初学者做的网站
  • 郑州网站推广外包网络工程就业前景
  • asp.net网站开发 pdf找人做淘宝网站多少钱
  • 网站编辑容易做吗php订餐网站开发文献
  • 百度网站自然排名优化百度云免费做网站
  • 商务互联做网站怎么样全国城乡和住房建设厅查询网
  • 成都专业的网站建设制作公司哪家好广告手机网站制作
  • 有专门做摄影画册的网站吗自主网站
  • asp.net做的网站要放到网上空间去_要放哪些文件上去有没关于做动画设计师的网站
  • 山东省交通厅建设网站首页中国移动手机支付网站
  • 网站之家wordpress提速插件
  • 用别人网站名做长尾关键词制作网站加背景怎么做流程