C语言中简单的内存函数

目录

一. memcpy 使用和模拟实现

1.1 函数定义

1.2 使用示例

1.3 模拟实现

二.memmove 使用和模拟实现

2.1 函数定义

2.2 使用示例

2.3 模拟实现

​三.memset 函数的使用

3.1 函数定义

3.2 使用示例

四.memcmp函数的使用

4.1 函数定义

4.2 使用示例


一. memcpy 使用和模拟实现

1.1 函数定义

memcpy 函数是 C 语言标准库中的一个函数,定义在 <string.h> 头文件中。它用于从源内存地址的位置开始拷贝 n 个字节到目标内存地址的位置memcpy 函数不检查源和目标内存区域是否重叠,也不关心数据的具体类型,只是简单地复制内存块

dest:目标内存地址的指针。

src:源内存地址的指针。

n:需要复制的字节数。 

返回值memcpy 函数返回目标内存地址的指针。

1.2 使用示例

这个示例展示了如何使用 memcpy 函数复制字符串,并验证了复制的结果。在实际编程中,memcpy 函数常用于复制内存块,如数组、结构体等。 

1.3 模拟实现

二.memmove 使用和模拟实现

2.1 函数定义

memmove 函数是 C 语言标准库中的一个函数,用于复制内存块。与 memcpy 函数类似,memmove 也可以用来复制一块内存区域的内容到另一块内存区域,但它能正确处理源内存区域和目标内存区域重叠的情况。当源内存和目标内存重叠时,memmove 会确保源内存区域的内容在复制之前不会被覆盖,这是它与 memcpy  的主要区别。 

memmove 函数的原型定义在 <string.h> 头文件中,如下所示: 

 

dest:指向用于存放复制内容的目标内存区域的指针。

src:指向要复制的数据源的指针。

n:要复制的字节数。

返回值memmove 函数返回指向目标内存区域 dest 的指针。

2.2 使用示例

 

 

在这个例子中,memmove 函数用于将 src 字符串中的一部分复制到 dest 字符串的指定位置,即使源区域和目标区域有重叠也不会出错。

2.3 模拟实现

三.memset 函数的使用

3.1 函数定义

memset 函数是 C 语言标准库中的一个函数,用于给一块内存区域设置相同的值。这个函数定义在 <string.h> 头文件中。 

 

s:指向要填充的内存块的指针。

c:要设置的值。虽然这个参数是 int 类型,但是 memset 实际上是按字节处理的,只会使用该值的低 8 位(即一个字节)。

n:要被设置为字符 c 的字节数。

返回值:返回一个指向内存块 s 的指针。

3.2 使用示例

memset 函数通常用于初始化内存区域,比如将一个数组的所有元素都设置为 0 或 -1。由于 memset 是按字节操作的,所以它最适合用来设置字符数组或者将内存区域清零。 

四.memcmp 函数的使用

4.1 函数定义

memcmp 函数是 C 语言标准库中的一个函数,用于比较两块内存区域的内容。这个函数定义在 <string.h> 头文件中。

 

s1:指向第一块内存区域的指针。

s2:指向第二块内存区域的指针。

n:要比较的字节数。

返回值

如果 s1 和 s2 的前 n 个字节完全相同,则返回 0

如果 s1 所指向的内存区域在前 n 个字节内,有字节小于 s2 所对应的字节,则返回小于 0 的值。

如果 s1 所指向的内存区域在前 n 个字节内,有字节大于 s2 所对应的字节,则返回大于 0 的值。

4.2 使用示例

 memcmp 函数通过比较两块内存区域的每一个字节来判断它们是否相等,或者哪一块内存区域在字典序上更大。这个函数通常用于比较字符串、数组等内存块的内容

 

后记 

开学咯,兄弟们,卷起来!!!

共勉!!! 

  • 22
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值