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

做的网站上更改内容改怎么最新社会舆情信息

做的网站上更改内容改怎么,最新社会舆情信息,兰州市城乡建设局网站官网,郑州网站建设优化数组面试题解析 字符数组 (一) 我们上一篇文章学习了一维数组的面试题解析内容和字符数组的部分内容,我们这篇文章讲解一下字符数组和指针剩余面试题的解析内容,那现在,我们开始吧。 我们继续看一组字符数组的面试…

数组面试题解析

字符数组

(一)

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

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

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.dinnco.com/news/84813.html

相关文章:

  • 杭州网站怎么做seoseo整站优化解决方案
  • 个人网站空间怎么做百度极速版下载安装
  • 网站建设排名优化技巧苹果cms播放器
  • 做导购类网站沧州网站优化
  • 做网站咋做网站设计制作
  • 网站开发硬件成本微信营销的方法和技巧
  • 自己搭建网站的步骤友链对网站seo有帮助吗
  • 做网站百度一下互联网行业都有哪些工作
  • 最早做美食团购的网站制作网站首页
  • 宝鸡市做网站的公司有哪些百度快速收录办法
  • 网站主机教程seo是什么单位
  • 福州专业网站设计企业网站建设原则是
  • 青岛网站建设推进互联网营销是做什么的
  • 大连建网站网站制作巨量引擎官网
  • dw做网站怎么发布百度seo优化包含哪几项
  • 网站备案查询背景布搜索引擎优化网站的网址
  • 建网站都用什么字体小学生简短小新闻
  • 网站的英文版怎么做的seoul是什么意思
  • 免备案的网站空间十种网络推广的方法
  • 北京企业网站推广价格第三方平台推广引流
  • 做网站有未来吗站长工具排行榜
  • 手机自己制作文字配图seo知识总结
  • 网站权重分析百度智能建站系统
  • 做网站贵不企业品牌营销推广
  • 有哪些网站可以做毕业设计超级外链发布工具
  • 商洛市住房和城乡建设局网站中国软文网
  • 公司网站建设需要什么资质暴风seo论坛
  • 东莞设计网站公司沈阳百度seo关键词优化排名
  • 400全国服务热线容桂网站制作网站建设需要多少钱?
  • wordpress菜单加图标七台河网站seo