深入理解指针(5)

 

目录

一.sizeof和strlen的对比

1.1 sizeof

1.2 strlen 

1.3 sizeof 和 strlen的对比 

sizeof

strlen

总结

 二.数组和指针笔试题解析

2.1 ⼀维数组 ​

2.2 字符数组 

2.3 ⼆维数组 

三.指针运算笔试题解析 

3.1 题目1

3.2 题目2 

3.3 题目3 

3.4 题目4 

3.5 题目5 

3.6 题目6


一.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 是一个编译时操作符,用于获取变量或类型在内存中占用的字节数。
  • 适用对象:它可以用在基本数据类型(如 intfloatchar 等)、结构体(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 ⼀维数组 

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

 

共勉!!! 

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值