详解strlen和sizeof在数组中的使用(二)
目录
一、前言
二、sizeof在字符数组中的题目
这整题sizeof的答案是:
32位平台下:
64位平台下:
一、前言
前面我们已经提到了sizeof在整形数组的使用,因为strlen只能在字符数组中使用,所以上一
没涉及strlen,下篇一定(手动狗头),可能会迟到,但是不会缺席。其实在数组的使用考得挺频
繁的 一般会出现一个字符数组然后呢,给出sizeof和strlen求数组长度,考点在于\0是计算到了,
这类题目较为简单,在一维数组简单些,在二维数组略难一点点,在三维数组.......好啦,废话不多
说咱们,直接进入正题。
二、sizeof在字符数组中的题目
(友情提示,若是下例没看懂,可以看看第一篇:(17条消息) 详解strlen和sizeof在数组的中的使用(一)_执久呀的博客-CSDN博客)
#include<stdio.h>
#include<string.h>
int main()
{char arr[] = { 'a', 'b', 'c', 'd', 'e', 'f' };printf("%d\n", sizeof(arr));printf("%d\n", sizeof(arr+0));printf("%d\n", sizeof(*arr+1));printf("%d\n", sizeof(&arr));printf("%d\n", sizeof(&arr+1));printf("%d\n", sizeof(&arr[1]));printf("%d\n", sizeof(&arr[1]+1));return 0;
}
第一个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位平台下:
好啦,每日一道题就行啦哈哈,咱们下期在见
详解strlen和sizeof在数组中的使用(二)相关推荐
- 【分步详解】两个有序数组中的中位数和Top K问题
我现在在做一个叫<leetbook>的开源书项目,把解题思路都同步更新到github上了,需要的同学可以去看看 地址:https://github.com/hk029/leetcode 这 ...
- 经典算法详解(2)寻找数组中的次大数
题目:10个互不相等的整数,求其中的第2大的数字,要求数组不能用排序,设计的算法效率越高越好. 1 #include<iostream> 2 3 using namespace std; ...
- 最详解——寻找两个有序数组的中位数
参考:[分步详解]两个有序数组中的中位数和Top K问题 题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O ...
- 最长上升子序列(LIS)/最长不上升子序列问题算法详解+例题(树状数组/二分优化,看不懂你来打我)
目录 最长上升子序列 一.朴素做法O(2n)O(2^n)O(2n) 二.优化做法O(nlogn)O(nlogn)O(nlogn) 三.例题引入:P1020 导弹拦截(求最长上升子序列和最长不上升子序列 ...
- android平台下OpenGL ES 3.0实例详解顶点属性、顶点数组
OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...
- vue template html属性,详解template标签用法(含vue中的用法总结)
一.html5中的template标签 html中的template标签中的内容在页面中不会显示.但是在后台查看页面DOM结构存在template标签.这是因为template标签天生不可见,它设置了 ...
- 公开课报名 | 详解CNN-pFSMN模型以及在语音识别中的应用
近年来,在深度学习技术的帮助下,语音识别取得了极大的进展,从实验室开始走向市场,走向实用化.基于语音识别技术的输入法.搜索和翻译等人机交互场景都有了广泛的应用. Librispeech是当前衡量语音识 ...
- 公开课 | 详解CNN-pFSMN模型以及在语音识别中的应用
近年来,在深度学习技术的帮助下,语音识别取得了极大的进展,从实验室开始走向市场,走向实用化.基于语音识别技术的输入法.搜索和翻译等人机交互场景都有了广泛的应用. Librispeech是当前衡量语音识 ...
- 一致性协议raft详解(三):raft中的消息类型
一致性协议raft详解(三):raft中的消息类型 前言 raft 节点 Raft中RPC的种类 RequestVote leader选举成功后 AppendEntries 请求参数 返回值 存储日志 ...
最新文章
- mysql存储引擎6_Mysql各种存储引擎对比总结
- 兼容IE8,滚动加载下一页
- android ext3 格式化,怎样将TF卡格式化为EXT分区?
- inodemac_校园网客户端Mac版-Inode7.0 for mac下载 V7.0-PC6苹果网
- containsObject 总是不含有,你会用吗
- C语言学习之将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1. 要求改为1,4,5,6,8。
- java identity_仔细研究Java Identity API
- 串行内存消耗 并行内存_如何估算内存消耗?
- 适用于高级Java开发人员的十大书籍
- 青岛经济职业学校有计算机专业吗,青岛经济职业学校
- npm ERR! command failednpm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node-gyp rebuild
- 使用 RemObjects SDK 建立 WebService 应用
- 垃圾收集器和内存分配
- win7旗舰版安装oracle11g
- 第二章、Zigbee模块参数(DRF1609H、DRF2657C)
- 处理团队中的消极情绪
- 读书笔记丨《数据产品经理修炼手册:从零基础到大数据产品实践》丨DAY4
- 智安网络丨居安思危·洞见未来 —— 智安网络安全周报
- 做一个校园跑腿小程序需要多少成本?
- docker安装node-sass报错