C语言:指针与数组那些事系列之“字符数组” 接着上一篇的一维数组,今天给大家来带的是他的好兄弟“字符数组”,在开始字符数组之前,我们先继续来回顾一下上节课提到的数组名不能代表数组首素地址的两个漏网之鱼 一、数组名的两种特殊情况 第一种情况:sizeof(数组名)- 数组名表示的是整个数组的-计算的是整个数组的大小 注:需要数组名单独放在sizeof()里面 第二种情况:&数组名 – 数组名表示整个数组,取出的是整个数组的地址 除了上面两种特殊情况外,所有的数组名代表的都是数组首素的地址 回顾完这个知识点,那我们就来看看关于字符数组和指针之间的一些笔试题吧
大家可以花个几分钟的时间来思考思考以上题目,有助于加深指针和数组之间关系的理解喔 即将公布答案,大家思考片刻再进行阅读答案喔
三、指针和数组笔试题解析——“字符数组” 今天的题量较少,有了上一篇对一维数组的理解,针对今天的题目是否感觉游刃有余呢 让我们紧接着来探讨字符数组身上的秘密吧✊printf(“%d\n”, sizeof(arr))——输出结果:6 ⭕解释:数组名arr被sizeof()单独包含,所以arr表示的是整个数组,sizeof(arr)计算的是整个数组的大小,一共六个素,每个素都是char型,因此结果为6个字节 2.printf(“%d\n”, sizeof(arr + 0))——输出结果:4/8 ⭕解释:数组名arr没有单独被sizeof()包含,因此arr表示的是首素的地址,arr+0仍是首素地址,sizeof(arr+0)计算的是首素地址的大小,在32位系统返回4,在64系统返回8 3.printf(“%d\n”, sizeof(*arr)——输出结果:1 ⭕解释:数组名arr没有单独被sizeof()包含,因此arr表示的是首素的地址,*arr表示的是数组首素‘a’sizeof(*arr)计算的是数组第一个素的大小,类型是char型,结果为1个字节 4.printf(“%d\n”, sizeof(arr[1]))——输出结果:1 ⭕解释:arr[1]表示数组第二个素‘b’,sizeof(arr[1])计算的是数组第二个素的大小,类型是char型,结果为1个字节 5. printf(“%d\n”, sizeof(&arr))——输出结果:4/8 ⭕解释:&arr表示的是整个数组的地址(特殊情况其一),虽是整个数组的地址,但其本质仍是一个地址,sizeof(&arr)计算的是一个地址的大小,在32位系统返回4,在64系统返回8 6.printf(“%d\n”, sizeof(&arr + 1))——输出结果:4/8 ⭕解释:&arr表示的是整个数组的地址(特殊情况其一),(&arr+1)表示的是跳过数组后面那一块空间的首地址,但其本质仍是一个地址,sizeof(&arr+1)计算的仍是一个地址的大小,在32位系统返回4,在64系统返回
7. printf(“%d\n”, sizeof(&arr[0]+1))——输出结果:4/8 ⭕解释:arr[0]表示的是数组的第一个素‘a’(&arr[0]+1)表示的是a素下一个素的地址即为b的地址,sizeof(&arr[0]+1)计算的是一个地址的大小,在32位系统返回4,在64系统返回8 初次创作,内容如有错误欢迎各位大神批评指正 大家如果觉得有帮助的话点个赞支持一下博主喔✊✊后续还会继续更新“指针与数组那些事”的其他系列,如感兴趣可以多多一下博主
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/77070.html