C语言 -- sizeof和strlen的用法

news2024/12/28 17:36:35

C语言 -- sizeof和strlen的用法

  • 1. sizeof和strlen的对比​
    • 1.1 sizeof​
    • 1.2 strlen​
    • 1.3 sizeof 和 strlen的对比​
  • 2. 数组和指针笔试题解析
    • 2.1 一维数组​
    • 2.2 字符数组​
    • 2.3 二维数组
  • 3. 指针运算笔试题解析
    • 3.1 题目1:
    • 3.2 题目2​
    • 3.3 题目3​
    • 3.4 题目4​
    • 3.5 题目5​
    • 3.6 题目6​
    • 3.7 题目7​

1. sizeof和strlen的对比​

1.1 sizeof​

  • sizeof 计算变量所占内存空间大小的,单位是字节,如果操作数是类型的话,计算的是使用类型创建的变量所占内存空间的大小。
  • sizeof 只关注占用内存空间的大小,不在乎内存中存放什么数据。

测试代码1如下:
在这里插入图片描述

测试代码2如下:
在这里插入图片描述

1.2 strlen​

  • strlen 是C语言库函数,功能是求字符串长度。函数原型如下:

size_t strlen ( const char * str );

  • 统计的是从 strlen 函数的参数 str 中这个地址开始向后, \0 之前字符串中字符的个数。
  • strlen 函数会一直向后找 \0 字符,直到找到为止,所以可能存在越界查找。

测试代码如下:

在这里插入图片描述

测试代码2如下:

在这里插入图片描述

1.3 sizeof 和 strlen的对比​

在这里插入图片描述
测试代码如下:

在这里插入图片描述

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

在做题之前,我们必须要知道的知识点如下:
数组名的理解:

  • sizeof(数组名),数组名表示整个数组,计算的是整个数组的大小,单位是字节
  • &数组名,数组名表示整个数组,取出的数组的地址除此之外.
  • 所有遇到的数组名都是数组首元素的地址

注意

32位平台下地址是32个bit位,指针变量(地址)大小是4个字节
64位平台下地址是64个bit位,指针变量(地址)大小是8个字节​
注意指针变量的大小和类型是无关的,只要指针类型的变量,在相同的平台下,大小都是相同的。

x64环境下指针变量大小是8
x86环境下指针变量大小是4
以下代码均在x86环境下演示

2.1 一维数组​

在这里插入图片描述

2.2 字符数组​

代码1:

在这里插入图片描述

代码2:

在这里插入图片描述

代码3:

在这里插入图片描述

代码4:

在这里插入图片描述

代码5:

在这里插入图片描述

代码6:

在这里插入图片描述

2.3 二维数组

在这里插入图片描述

3. 指针运算笔试题解析

3.1 题目1:

在这里插入图片描述

下图是分析:
在这里插入图片描述

3.2 题目2​

在这里插入图片描述

下图是分析:
在这里插入图片描述

3.3 题目3​

在这里插入图片描述

下图是分析:
在这里插入图片描述

3.4 题目4​

在这里插入图片描述

下图是分析:
在这里插入图片描述

3.5 题目5​

在这里插入图片描述

下图是分析:
在这里插入图片描述

3.6 题目6​

在这里插入图片描述

下图是分析:
在这里插入图片描述

3.7 题目7​

在这里插入图片描述

下图是前三行代码的图:
在这里插入图片描述
根据前三行代码的图分析后面的代码,可以得到正确答案,由于分析过程会修改上图,我就暂时不分析了,感兴趣的自己分析下吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1953247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣高频SQL 50题(基础版)第十九题

文章目录 力扣高频SQL 50题(基础版)第十九题1211. 查询结果的质量和占比题目说明思路分析实现过程准备数据实现方式结果截图 力扣高频SQL 50题(基础版)第十九题 1211. 查询结果的质量和占比 题目说明 Queries 表: …

学习c语言第十五天(初阶测评)

选择题 1.下列程序输出结果为 67 2.下列程序输出结果为 死循环打印 3.i 和j的值分别为什么 2 1 4.k的终值是什么 90 5.输出结果是什么 1 6.正确的是 C 7. C语言规定main函数位置 C 8.不正确的是 D 9.正确的是 c 库函数独立c语言之外 10…

comsol在静水压力下的地应力平衡

comsol在静水压力下的地应力平衡 条件: 水深3m,粗砂层厚度10m,模型长度100m土体的饱和密度1950kg/m3水的密度1000kg/m3浮重度 γ ′ = γ s a t − γ w \gamma=\gamma_{sat}-\gamma_w γ

GD32 PWM输入捕获

前言 通过本次的学习,了解定时器的分类和配置,高级定时器,通用定时器等不同等级的定时器拥有的功能,学习定时器的输入捕获与输出比较功能(PWM)脉冲宽度调制,来控制电机等外设。 定义 定时器的分…

Pytorch学习笔记——在GPU上进行训练

文章目录 1. 环境准备2. 导入必要库3. 加载数据集4. 定义简单的神经网络模型5. 检查和设置GPU设备6. 定义损失函数和优化器7. 训练模型8. 全部代码展示及运行结果 1. 环境准备 首先,确保PyTorch已经安装,且CUDA(NVIDIA的并行计算平台和编程模…

go-kratos 学习笔记(6) 数据库gorm使用

数据库是项目的核心,数据库的链接数据是data层的操作,选择了比较简单好用的gorm作为数据库的工具;之前是PHP开发,各种框架都是orm的操作;gorm还是很相似的,使用起来比较顺手 go-kratos官网的实例是ent&…

鸿蒙UI系统组件10——菜单(Menu)

果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下面名片,关注公众号。 Menu是菜单接口,一般用于鼠标右键弹窗、点击弹窗等。 1、创建默认样式的菜单 菜单需要调用bindMenu接口来实现。bindMenu响应绑定组件的点击事件&am…

ModuleNotFoundError: No module named ‘py3langid‘ 以及如何将包安在虚拟环境下

前提:已经安装过改包(pip install py3langid),但仍报错 原因:安装在其他目录下了 解决办法: 1、再次在终端输入pip install py3langid 显示安装位置 Requirement already satisfied: py3langid in c:\…

css大屏设置中间元素四周渐变透明效果

css大屏设置中间元素四周渐变透明效果 四周透明效果: // 设置蒙版上下左右渐变显示mask-image: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 10%, rgba(0, 0, 0, 1) 90%, rgba(0, 0, 0, 0) 100%),linear-gradient(to bottom, rgba(0, 0, 0…

性能测试的指标及流程

性能测试指标 相应时间 并发数 吞吐量: 点击数 错误率 资源使用率 所有的东西是存在磁盘里的,在代码运行的时候会将磁盘的东西读取到内存里,磁盘IO和网络都是衡量速度,在任务管理器可查看资源使用率 题: 答案&#xf…

创建vue3项目,以及使用示例

1.在根目录下cmd:vue create myobj(没有切换淘宝镜像记得切换,这样创建项目运行快) 2. 3.(按空格键选中,选好回撤就到下一步了) 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.然后输入执行以下两步就已经运行项目了 以…

Java算法之递归算法-如何计算阶乘的值

上一篇学了递归之后,练习一下递归算法。 题目:使用递归算法计算阶乘的值,也就是5!5*4*3*2*1,直接使用循环是非常简单的,这边练习一下递归算法。 先写一下两个条件 基线条件:等于1的时候返回1…

windows下实现mongodb备份还原

添加环境变量 把mongodb安装目录下的bin路径添加到环境变量的path路径: 备份库 打开CMD,执行以下命令: mongodump -u test -p test -d test -o D://backup_mongodb//20220706 –gzip 参数说明: -u 用户名 -p 密码 -d 需要备份的库名称…

GraphHopper路劲规划导航(Android源码调试运行)

本文主要记录在运行graphhopper安卓版路径规划导航源码的步骤和遇到的问题。 成功运行了程序,但是路劲规划一直不成功,问题一开始是服务地址,后来又是key的问题,在这个项目中涉及到了graphhopper、mapbox、mapilion的key&#xff…

map、foreach、filter这些方法你还不知道什么时候该用哪个吗?那就看过来

forEach:‌主要用于遍历数组并对每个元素执行某种操作,‌通常用于改变当前数组里的值。‌它不会返回新数组,‌而是直接在原数组上进行操作。‌forEach方法不支持return、‌break、‌continue等语句,‌因为这些语句在forEach中不会…

多线程实例-线程池

线程池,就是把线程提前从系统中申请好,放到一个地方,后面需要使用线程的时候,直接从这个地方取,而不是从系统重新申请,线程用完之后也回到刚才的地方。 线程池的优点:降低线程创建和销毁的开销…

MICA:面向复杂嵌入式系统的混合关键性部署框架

背景 在嵌入式场景中,虽然 Linux 已经得到了广泛应用,但并不能覆盖所有需求,例如高实时、高可靠、高安全的场合。这些场合往往是实时操作系统的用武之地。有些应用场景既需要 Linux 的管理能力、丰富的生态,又需要实时操作系统的高…

戴尔vostro15-3568硬盘升级+系统重装

硬盘升级 原2.5机械硬盘换成了SATA2.5的固态硬盘 按F2进入bios后看到的电池信息如下: 需要重新换一个电池 系统重装 步骤如下 1.U盘需要格式化成 NTFS 类型的,并且从官网下载后介质 2.BV1z3411K7AD b站这个视频前三步可以参考设置

八、桥接模式

文章目录 1 基本介绍2 案例2.1 OperatingSystem 抽象类2.2 LinuxOS 类2.3 WindowsOS 类2.4 FileOperation 类2.5 FileAppender 类2.6 FileReplicator 类2.7 Client 类2.8 Client 类运行结果2.9 总结 3 各角色之间的关系3.1 角色3.1.1 Implementor ( 实现者 )3.1.2 ConcreteImpl…