一、sizeof 和 strlen 的对比1.sizeofsizeof 计算变量所占内存空间大小的单位是字节如果操作数是变量类型的话计算的是使用类型创建变量所占内存空间的大小sizeof 只关注占用内存空间的大小不在乎内存中存放什么数据2.strlenstrlen 是C语言库函数功能是求字符串长度必须要包含头文件#include string.h统计的是 \0 之前字符串的个数strlen 函数会一直向后找 \0 字符 知道找到为止所以可能会存在越界查找3.sizeof 和 strlen 的对比项目sizeofstrlen本质运算符库函数作用计算占用内存字节大小统计字符串有效字符数量是否包含\0包含字符串末尾\0不包含\0求值时间大多编译期间算出运行时循环遍历内存参数类型 / 变量 / 数组名必须是以\0结尾的 char * 字符串无\0情况正常计算不会越界内存越界结果随机UB 未定义行为返回类型size_t无符号整型size_t无符号整型打印格式推荐%zu%zu二、数组和指针笔试题知识点回顾数组名的意义1. sizeof(数组名)这⾥的数组名表⽰整个数组计算的是整个数组的⼤⼩。2. 数组名这⾥的数组名表⽰整个数组取出的是整个数组的地址。3. 除此之外所有的数组名都表⽰⾸元素的地址。代码1:一维数组代码2字符数组代码3代码4代码5代码6代码7代码8二维数组三、指针运算笔试题代码1代码2代码3代码4tip指针 - 指针的前提是两个指针指向同一块空间指针 - 指针得到的是两个指针之间的元素个数小地址- 大地址会得到负数补充规则1.最高位是符号位剩下是数值位2.正数符号位 03.负数符号位 1后面写该数绝对值的二进制已知十进制真值 → 写出原码8 位举例例 158 位5 的绝对值二进制101补齐 7 个数值位0000101符号位 0 原码0 0000101例 2-58 位绝对值是 5二进制0000101符号位改成 1 原码1 0000101正数原码 反码 补码不用变 只有负数才需要转换。负数原码 → 补码两步法1.原码符号位不变其余各位按位取反得到反码2.反码1→ 得到补码口诀符号不动其余取反再加 1ex-58bit真值-5原码1 0000101反码1 1111010符号不变数值位取反补码1 1111011反码 1把这个 32 位补码写成十六进制每 4 位一组1111 1111 1111 1111 1111 1111 1111 1100F F F F F F F C-0xFFFFFFFC代码5代码6代码7