Mem系列函数介绍及案例实现
昨天导师甩给我们一个项目案例,让我们自己去看一看熟悉一下项目内容,我看到了这个项目里面大量使用memset(sBuf,0,sizeof(sBuf));这一块内存填充的代码,于是回想起以前查过Mem系列函数的具体用法。整理整理。
函数名称: memset
函数原型: void *memset(void *s, int ch, size_t n);
函数功能: 在一段内存块中填充某个给定的值,是对较大的结构体或数组进行清零操作的最快方法。
函数返回: void
参数说明: void *s — 待初始填充的内存首地址
int ch — 待填充的ASCII码
size_t n — 待初始化填充的字节个数
补充:不要对结构体使用memset赋非0以外的值,这很有可能会使得结构体内部的结构被破坏。
函数名称: memcpy
函数原型: void *memcpy(void *dest, const void *src,size_t n);
函数功能: 内存区段拷贝;将src指向内存地址的连续N个指针位置的内容拷贝至dest指针指向的位置
函数返回: void
参数说明: dest — 目的内存空间指针
src — 源内存空间指针
n — 拷贝指针位置个数
补充:使用memcpy对一段内存进行替换的时候要保证前两参数分别为目的地址和源地址或者指针
函数名称: memmove
函数原型: void *memmove(void *dest, const void *src,size_t n);
函数功能: memmove用于从src拷贝n个单位长度到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同
(在我个人使用的过程中并没发现过这两个函数的区别 - -||| )(快回去把,别丢人了,菜是原罪 )
函数返回: void
参数说明: dest — 目的内存空间指针
src — 源内存空间指针
n — 移动指针位置个数
函数名称: memcmp
函数原型: int memcmp (const void *S1, const void *S2, size_t size)
函数功能: 用于比较内存数据S1与S2的前size个字符
函数返回: 从指针第一个字符开始比较,如果S1,S2完全相同返回0,如果S1[i]大于S2[i]则跳出返回-1,如果S1[i]小于S2[i]则跳出返回1
参数说明: S1—待比较内存数据1
S2—待比较内存数据2
size—比较内存数据个数
函数名称:_memicmp
函数原型:int _memicmp (const void *S1, const void *S2, size_t size)
函数功能:用于比较内存数据S1与S2的前size个字符,如若相同,返回0
函数返回:如果S1,S2相同返回0,不相同返回两个字符串第一个出现不同地方的字符差值
if(s1[i]!=s2[i]!) return s1[i]-s2[i];
补充:_memicmp不区分字母大小写,主要用于英文字符判断
Mem系列函数介绍及案例实现的更多相关文章
- openssl之EVP系列之13---EVP_Open系列函数介绍
openssl之EVP系列之13---EVP_Open系列函数介绍 ---依据openssl doc/crypto/EVP_OpenInit.pod翻译和自己的理解写成 (作者:Dra ...
- openssl之EVP系列之12---EVP_Seal系列函数介绍
openssl之EVP系列之12---EVP_Seal系列函数介绍 ---依据openssl doc/crypto/EVP_SealInit.pod翻译和自己的理解写成 (作者:Dra ...
- openssl之EVP系列之11---EVP_Verify系列函数介绍
openssl之EVP系列之11---EVP_Verify系列函数介绍 ---依据openssl doc/crypto/EVP_VerifyInit.pod翻译和自己的理解写成 (作者 ...
- openssl之EVP系列之10---EVP_Sign系列函数介绍
openssl之EVP系列之10---EVP_Sign系列函数介绍 ---依据openssl doc/crypto/EVP_SignInit.pod翻译 (作者:DragonKing, ...
- 转: OVER() 系列函数介绍
OVER(PARTITION BY)函数介绍 开窗函数 Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返 ...
- 线程模型、pthread 系列函数 和 简单多线程服务器端程序
一.线程有3种模型,分别是N:1用户线程模型,1:1核心线程模型和N:M混合线程模型,posix thread属于1:1模型. (一).N:1用户线程模型 “线程实现”建立在“进程控制”机制之上,由用 ...
- Python开发【第三章】:Python函数介绍
一. 函数介绍 1.函数是什么? 在学习函数之前,一直遵循面向过程编程,即根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复 ...
- 从简单需求到OLAP的RANK系列函数
同事问了一个非常简单的问题,怎么取出每个partition里面另外一个列的最小值? create table t1 (int c1, int c2); 假如按照c2分区,0-10,10-20,20 ...
- linux tricks 之VA系列函数.
VA函数(variable argument function),参数个数可变函数,又称可变参数函数.C/C++编程中,系统提供给编程人员的va函数很少.*printf()/*scanf()系列函数, ...
随机推荐
- Coursera, Big Data 4, Machine Learning With Big Data (week 3/4/5)
week 3 Classification KNN :基本思想是 input value 类似,就可能是同一类的 Decision Tree Naive Bayes Week 4 Evaluating ...
- Linux下定时备份文件
一. 编写脚本 编写一个脚本文件,使脚本可以执行备份命令. 例如,将文件目录 /home/backups/balalala 备份到/home目录下,并压缩. 1. 创建脚本 命令格式: touch 路 ...
- mingw-gcc-8.3.0-i686-posix-sjlj
网上无法找到 gcc-8.3.0 的 posix 版本, 所以自己编译了这个版本 gcc -v Using built-in specs. COLLECT_GCC=d:\msys\mingw\bin\ ...
- 一位6年老Android面经总结
声明|作者:android进阶者地址:https://www.jianshu.com/p/d77873cbad5f 前言 准备面试其实已经准备了挺久了,当时打算面试准备了差不多以后,跟公司谈谈涨薪的事 ...
- python之yield的一些应用
生成器 yield是用于生成器.生成器通俗的认为,在一个函数中,使用了yield来代替return的位置的函数,就是生成器.它不同于函数的使用方法是:函数使用return来进行返回值,每调用一次,返回 ...
- VMware与Hyper-V的冲突解决 VMware Workstation 与 Device/Credential Guard 不兼容 解决方案
win10专业版官方解决方案https://kb.vmware.com/s/article/2146361 win10家庭版解决方案win10家庭版本身是不支持Hyper-V服务的,但是如果是“win ...
- 同时安装多个的Mysql的实现方法
首写修改my.ini文件 修改这几项即可 [client] port= [mysql] default-character-set=utf8 [mysqld] port= server_id= 全文如 ...
- html中div使用CSS实现水平/垂直居中的多种方式
CSS中的居中,在工作中,会经常遇到.它可以分为水平居中和垂直居中,以下是几种实现居中的方式. git 查看源码 配合在线预览,效果更佳 以下例子中,涉及到的CSS属性值. .parent-frame ...
- RabbitMQ教程
1.引言 RabbitMQ——Rabbit Message Queue的简写,但不能仅仅理解其为消息队列,消息代理更合适.RabbitMQ 是一个由 Erlang 语言开发的AMQP(高级消息队列协议 ...
- Cocos Creator Animation 组件
使用脚本控制动画 Animation 组件 Animation 组件提供了一些常用的动画控制函数,如果只是需要简单的控制动画,可以通过获取节点的 Animation 组件来做一些操作. 播放 var ...