详解strlen和sizeof在数组中的使用(二)
目录
一、前言
前面我们已经提到了sizeof在整形数组的使用,因为strlen只能在字符数组中使用,所以上一
没涉及strlen,下篇一定(手动狗头),可能会迟到,但是不会缺席。其实在数组的使用考得挺频
繁的 一般会出现一个字符数组然后呢,给出sizeof和strlen求数组长度,考点在于\0是计算到了,
这类题目较为简单,在一维数组简单些,在二维数组略难一点点,在三维数组.......好啦,废话不多
说咱们,直接进入正题。
二、sizeof在字符数组中的题目
(友情提示,若是下例没看懂,可以看看第一篇: )
第一个sizeof(arr),数组名单独放在sizeof中,表示的是整个数组,所以大小是6*1=6字节
有疑问的可以去看看第一篇,那里有详细介绍。
第二个sizeof(arr+0),数组名没有单独放在sizeof中,所以arr表示首元素的地址,首元素
地址+0还是首元素地址,因为是地址,所以是4或8字节
第三个sizeof(*arr+1),arr表示的是首元素地址,*arr表示的是首元素,*arr+1,表示首元素
自增1,即a+1,对于整形和字符型相加减,char会自动转化成int类型,char会自动转化成所对
的ascll值,如a是97,所以a+1是98了,但是int不能自动转化成char(后期会介绍,这里就不
多说了),所以这个值是98,为int类型,所以大小是4字节。
第四个sizeof(&arr),&arr拿到了整个数组的地址地址,不用多说,既然是地址,那么大小就
是4或8字节。
第五个sizeof(&arr+1),&arr拿到了整个数组的地址,&arr+1,跳过了整个数组,因为sizeof
不会去计算,所以不存在什么所谓的越界访问。既然是地址那就是4或8字节。
第六个sizeof(&arr[1]),arr[1]是第二个元素,&arr[1]表示拿到第第二个元素的地址,既然是
地址,所以是4或8字节。
第七个 sizeof(&arr[1]+1),&arr[1]表示拿到第二个元素的地址,&arr[1]+1,表示的是第三个元
素的地址,既然是地址,(你们应该听吐了吧,我也快讲吐了),那就是4或8字节。
其中第三题比较易错,多留意一下第三题吧。
这整题sizeof的答案是:
32位平台下:
64位平台下:
好啦,每日一道题就行啦哈哈,咱们下期在见
- 点赞
- 收藏
- 关注作者
评论(0)