软件开发(8):memset()与memcpy()函数
来源:互联网 发布:数控铣床编程卡通图案 编辑:程序博客网 时间:2024/06/05 05:27
第1部分 重新认识C语言
memset()与memcpy()函数
软件项目中的代码,少则数千行,多则上万行,但并非无规律可循。阅读了那么多代码之后,我发现有两个函数出现的频率很高,那就是memset()与memcpy()函数,它们都是C语言编程中经常要用到的。工作之余,我查了一些资料,现对它们作一个简单的说明。
1. memset()函数
(1)函数原型
void *memset( void *dest, int c, size_t count )。
(2)函数作用
在MSDN中,将该函数的作用描述为:Sets buffers to a specified character,即:将缓存设定为一个专门的字符。简单地说,就是将已开辟内存空间dest的首count个字节的值设为值c。
(3)应用举例
/***************************************************************
*版权所有 (C)2014, Zhou Zhaoxiong。
*
*文件名称:memset.c
*内容摘要:用于测试memset函数
*其它说明:无
*当前版本:V1.0
*作 者:周兆熊
*完成日期:20140329
*
*修改记录1: //修改历史记录,包括修改日期、版本号、修改人及修改内容等
* 修改日期:
* 版本号:
* 修改人:
* 修改内容:
***************************************************************/
#include <memory.h>
#include <stdio.h>
typedef signed char INT8; //重定义数据类型
typedef signed int INT32; //重定义数据类型
/**********************************************************************
*功能描述:主函数
*输入参数:无
*输出参数:无
*返回值:无
*其它说明:无
*修改日期 版本号 修改人 修改内容
* ------------------------------------------------------------------------------------------------------
* 20140329 V1.0 周兆熊 创建
***********************************************************************/
INT32 main(void)
{
INT8 szTestStr[100] = "AAAAAAAAAA";
printf("The original string is: %s\n", szTestStr);
memset(szTestStr, 'B', 5); //调用memset函数
printf("The changed string is: %s\n", szTestStr);
return 0;
}
该程序的输出结果为:
(4)重要应用
除了对指定位置设定值之外,该函数还可以用于内存空间初始化、内存拷贝、清空一个结构类型的变量或数组等。
2. memcpy()函数
(1)函数原型
void *memcpy( void *dest, const void *src, size_t count )。
(2)函数作用
在MSDN中,将该函数的作用描述为:Copies characters between buffers,即:在缓存之间拷贝字符。也就是说,该函数用来拷贝src所指的内存内容前count个字节到dest所指的内存地址上。
(3)应用举例
/***************************************************************
*版权所有 (C)2014, Zhou Zhaoxiong。
*
*文件名称:memcpy.c
*内容摘要:用于测试memcpy函数
*其它说明:无
*当前版本:V1.0
*作 者:周兆熊
*完成日期:20140329
*
*修改记录1: //修改历史记录,包括修改日期、版本号、修改人及修改内容等
* 修改日期:
* 版本号:
* 修改人:
* 修改内容:
***************************************************************/
#include <memory.h>
#include <stdio.h>
typedef signed char INT8; //重定义数据类型
typedef signed int INT32; //重定义数据类型
/**********************************************************************
*功能描述:主函数
*输入参数:无
*输出参数:无
*返回值:无
*其它说明:无
*修改日期 版本号 修改人 修改内容
* ------------------------------------------------------------------------------------------------------
* 20140329 V1.0 周兆熊 创建
***********************************************************************/
INT32 main(void)
{
INT8 szTestStr[100] = "AAAAAAAAAA";
INT8 szCopyStr[100] = "BBBBBBBBBB";
printf("The original string is: %s\n", szTestStr);
memcpy(szTestStr+1, szCopyStr+5, 3); //调用memcpy函数
printf("The changed string is: %s\n", szTestStr);
return 0;
}
该程序的输出结果为:
(4)重要说明
src和dest所指内存区域不能重叠,函数返回指向dest的指针。
- 软件开发(8):memset()与memcpy()函数
- 让你提前认识软件开发(8):memset()与memcpy()函数
- memset与memcpy函数使用详细说明。
- memset()与memcpy()函数及其作用
- memset / memcpy 函数
- 函数memset、memcpy、strcpy
- memset()和memcpy()函数
- c++ memset、memcpy函数
- memset ,memcpy 与strcpy
- memset与memcpy用法
- memset与memcpy
- memcpy与memset
- memset /memcpy /strcpy函数的使用与区别
- memset /memcpy /strcpy函数的使用与区别
- memset /memcpy /strcpy函数的使用与区别
- memset(),memcpy(),strcpy()函数介绍
- memcpy strcpy memset 函数用法
- memset()函数详解+strcpy()+memcpy()
- 软件开发(7):变量及函数的命名
- ArrayList遍历方式比较实验
- 图像LBP的值
- Linux内核工程导论——虚拟化
- eclipse maven 配置遇到的问题
- 软件开发(8):memset()与memcpy()函数
- CodeForces 149D Coloring Brackets(区间DP+dfs)
- OpenStack Mnaila 2015-10-01 IRC会议内容
- hdu 1020 encoding
- Linux内核工程导论——如何贡献内核代码
- 天声人語 20151008 人道支援と武器輸出
- 软件开发(9):C语言中的大括号
- jdk安装及环境变量设置
- Linux内核工程导论——硬件:音频子系统