memset函数的使用
来源:互联网 发布:js时间戳转换成时分秒 编辑:程序博客网 时间:2024/06/09 06:32
void *memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节(typedef unsigned int size_t)用ch 替换并返回s。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法,总的作用:将已开辟内存空间 s的首 n 个字节的值设为值(非数值型字符) c。
例如:
1、 char a[20];
memset(a,0,20*sizeof(char));//char a[20]清零
2、 char buffer[]="Helloworld\n";
printf("Buffer before memset:%s\n",buffer);
memset(buffer,'*',strlen(buffer));
printf("Buffer after memset:%s\n",buffer);
输出结果:
Buffer before memset:Helloworld
Buffer after memset:***********
3、 int array[5]={1,4,3,5,2};
for(int i=0;i<5;i++)
cout<<array[i]<<"";
cout<<endl;
memset(array,0,5*sizeof(int));//如果用1代替0是不行的,因为用memset对非字符型数组赋初值是不可取的
for(int k=0;k<5;k++)
cout<<array[k]<<"";
cout<<endl;
输出的结果就是:
14352
00000
4、typedef struct
{
char className[30];
int stu;
}ClassInfo;
ClassInfo info;
memset(&info,0,sizeof(ClassInfo));//清零
如果是Classinfo info[10]
memset(&info,0,10*sizeof(ClassInfo));//清零
5、memset()函数常用于内存空间初始化。如:
char str[100];
memset(str,0,100);
6、memset可以方便的清空一个结构类型的变量或数组。
struct sample_struct
{
char csName[16];
int iSeq;
int iType;
};
对于变量
struct sample_struct stTest;
一般情况下,清空stTest的方法:
stTest.csName[0]={'\0'};
stTest.iSeq=0;
stTest.iType=0;
用memset就非常方便:
memset(&stTest,0,sizeof(structsample_struct));
如果是数组:
structsample_struct TEST[10];
则
memset(TEST,0,sizeof(structsample_struct)*10);
另外:
如果结构体中有数组的话还是需要对数组单独进行初始化处理的。
注意:1、不要过度使用memset
例如
char buffer[4];
memset(buffer,0,sizeof(char)*4);
strcpy(buffer,"123");
//"123"中最后隐藏的'\0'占一位,总长4位。
这里的memset是多余的.因为这块内存马上就被全部覆盖,清零没有意义.
2、以下情况并不多余,因某些编译器分配空间时,内存中默认值并不为0:
char buffer[20];
memset(buffer,0,sizeof(char)*20);
memcpy(buffer,"123",3);
//这一条的memset并不多余,memcpy并没把buffer全部覆盖,如果没有memset,
//用printf打印buffer会有乱码甚至会出现段错误。
//如果此处是strcpy(buffer,"123");便不用memset,
//strcpy虽然不会覆盖buffer但是会拷贝字符串结束符
- memset函数的使用
- memset函数的使用
- memset()的函数使用
- memset()函数的使用
- memset函数的使用
- memset函数的使用
- memset 函数 的使用
- memset函数的使用
- 关于memset函数的使用
- memset函数的使用心得
- 关于memset() 函数的使用
- memset函数的使用陷阱
- memset函数的初步使用
- memset函数的使用原理
- C语言的memset()函数的使用
- 也谈memset函数的使用
- memset函数的使用及注意事项
- memset函数的正确使用与原理
- dinic最大流模板
- 每次请求都重置一次fragment
- 第 27章 调查性能问题
- python join连接字符串Demo
- 【HDU1205】吃糖果(抽屉原理)
- memset函数的使用
- G
- 获取字符串的长度(strlen/length)
- JDBC连接数据库
- cookie和session同与异!
- memcpy的使用
- bzoj 1070
- strcpy的使用
- 《如何让苹果机自动播放背景音乐》