目录
一.sizeof和strlen的对比
在学习操作符的时候,我们学习了 sizeof , sizeof 计算变量所占内存内存空间大小的,单位是 字节,如果操作数是类型的话,计算的是使用类型创建的变量所占内存空间的大小。 sizeof 只关注占用内存空间的大小,不在乎内存中存放什么数据。
1.1 sizeof
计算变量或类型的大小:
sizeof 只关注占用内存空间的大小,不在乎内存中存放什么数据。
1.2 strlen
strlen 是C语言库函数,功能是求字符串长度。函数原型如下:
统计的是从 strlen 函数的参数 str 中这个地址开始向后, \0 之前字符串中字符的个数。 strlen 函数会⼀直向后找 \0 字符,直到找到为止,所以可能存在越界查找。
1.3 sizeof 和 strlen的对比
sizeof
- 用途:
sizeof
是一个编译时操作符,用于获取变量或类型在内存中占用的字节数。 - 适用对象:它可以用在基本数据类型(如
int
,float
,char
等)、结构体(struct
)、联合体(union
)、数组以及指针上。 - 返回值:返回的是一个无符号整数(
size_t
),表示所查询对象占用的字节数。 - 执行时机:
sizeof
是在编译时计算大小的,所以它的计算不会受到变量实际内容的影响。
strlen
- 用途:
strlen
是一个标准库函数,用于计算字符串(以\0
结尾的字符数组)的长度,不包括结尾的\0
。 - 适用对象:它仅适用于以
\0
结尾的字符数组(即 C 风格的字符串)。 - 返回值:返回的是一个无符号整数(
size_t
),表示字符串中字符的数量,不包括结尾的\0
。 - 执行时机:
strlen
是在运行时计算的,因此它会读取并遍历字符串直到遇到\0
字符来计算长度。
总结
- 区别:
sizeof
是在编译时计算大小的,不考虑变量内容,而strlen
是在运行时计算字符串长度的,需要考虑字符串的内容。 - 适用对象:
sizeof
可以用于几乎所有数据类型,而strlen
仅适用于以\0
结尾的字符数组。 - 返回值:两者都返回
size_t
类型的值,但sizeof
返回的是内存占用字节数,strlen
返回的是字符串中的字符数(不包括\0
)。
二.数组和指针笔试题解析
2.1 ⼀维数组 ![](https://i-blog.csdnimg.cn/direct/ebf19fe7ad75469da2effb16d8e01278.png)
2.2 字符数组
代码1:
代码2:
代码3:
代码4:
代码5:
代码6:
2.3 ⼆维数组
数组名的意义:
1. sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。
2. &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。
3. 除此之外所有的数组名都表示首元素的地址。
三.指针运算笔试题解析
3.1 题目1:
3.2 题目2
3.3 题目3
3.4 题目4
3.5 题目5
3.6 题目6
共勉!!!