☰
C语言第十二课:指针(六)
2026/10/11 6:23:03 网站建设 项目流程

一、sizeof 和 strlen 的对比

1.sizeof

sizeof 计算变量所占内存空间大小的,单位是字节,如果操作数是变量类型的话,计算的是使用类型创建变量所占内存空间的大小

sizeof 只关注占用内存空间的大小,不在乎内存中存放什么数据

2.strlen

strlen 是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:

代码4:

tip:

指针 - 指针的前提是两个指针指向同一块空间

指针 - 指针得到的是两个指针之间的元素个数

(小地址- 大地址会得到负数)

补充:

规则:

1.最高位是符号位,剩下是数值位

2.正数:符号位 = 0

3.负数:符号位 = 1,后面写该数绝对值的二进制

已知十进制真值 → 写出原码(8 位举例)

例 1:+5,8 位

5 的绝对值二进制:101,补齐 7 个数值位:0000101符号位 0 原码:0 0000101

例 2:-5,8 位

绝对值是 5,二进制0000101符号位改成 1 原码:1 0000101

正数:原码 = 反码 = 补码,不用变! 只有负数才需要转换。

负数:原码 → 补码

两步法:

1.原码符号位不变,其余各位按位取反,得到反码

2.反码+1→ 得到补码

口诀:符号不动,其余取反,再加 1

ex:-5,8bit

真值:-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:

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询