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

淘宝网的网站建设网站建设中 页面源代码

淘宝网的网站建设,网站建设中 页面源代码,青岛seo优化,php在网站后台建设中的优势 张晋芳数组面试题解析 字符数组 (一) 我们上一篇文章学习了一维数组的面试题解析内容和字符数组的部分内容,我们这篇文章讲解一下字符数组和指针剩余面试题的解析内容,那现在,我们开始吧。 我们继续看一组字符数组的面试…

数组面试题解析

字符数组

(一)

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

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

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/262330/

相关文章:

  • wordpress 手机站目录企业策划书3000字
  • 建设银行个人网银没有弹出网站门户网站的基本特征多选题
  • 网站建设需要摊销吗如何优化网站排名
  • 怎么建商城网站2022年小微企业所得税优惠政策
  • 泌阳县网站建设甘肃路桥建设集团网站
  • 嘉兴做网站管理战略咨询公司
  • 做网站电销企业建站公司流程
  • 免费的html大作业网站网站搜索引擎友好性分析
  • 关于做情侣的网站的图片素材北京提供厦门网络推广
  • 在网站上做教育直播平台多少钱灵山建设局网站
  • wordpress网站的配置文件给网站做排名优化学什么好
  • ps网站首页怎么做北京 网站开发 大兴
  • 苏州专业建设网站搜索词排行榜
  • 做环球资源网站有没有效果莱芜网站建设价格低
  • 免费自助建站软件下载昆明医院网站建设
  • 如何建立一个网站视频教学玄武营销型网站制作厂家
  • 网站模版建设最新军事新闻最新消息
  • 开个捕鱼网站怎么做企业宣传软文范例
  • 网站开发培训排名全球十大摄影作品
  • 厦门做网站多少钱专业网站优化培训
  • 怎么在各个网站免费推广信息wordpress seo优化插件
  • 品牌网站建设小蝌蚪c小米发布会官网
  • 淮安网站开发工程师招聘网天津设计公司有哪些
  • 给网站做广告自己做h5怎么做
  • 石家庄网站免费制作冻品网站的建设背景
  • 网站源码小千个人网推广普通话写好规范字手抄报
  • 韩国网站 后缀wordpress删除谷歌自提
  • 网站页尾版权视频直播app源码
  • 最优惠的郑州网站建设免费企业网站程序上传
  • 展示型网站一样做seo优化吗即墨公司做网站