memset函数理解
2013-08-29 09:53
190 查看
原型:extern void *memset(void *buffer, int c, int count);
功能:把buffer所指内存区域的前count个字节设置成字符c。
包含头文件:<string.h>
说明:返回指向buffer的指针。
注意这个函数是字符串函数,所以一定要包含字符串头文件。
使用方法:
1、memset() 函数常用于内存空间初始化。如:
char str[100];
memset(str,0,100);
2、memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;例:char a[100];memset(a, '/0', sizeof(a));
3、memset可以方便的清空一个结构类型的变量或数组。
如:
struct sample_struct
{
char csName[16];
int iSeq;
int iType;
};
对于变量
struct sample_strcut stTest;
一般情况下,清空stTest的方法:
stTest.csName[0]='/0';
stTest.iSeq=0;
stTest.iType=0;
用memset就非常方便:
memset(&stTest,0,sizeof(struct sample_struct));
如果是数组:
struct sample_struct TEST[10];
则
memset(TEST,0,sizeof(struct sample_struct)*10);
当然不是所有情况都有清空。有时如果不清空,可能会在测试当中出现野值。
例二:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[5];
memset(a,'1',5);
for(int i = 0;i < 5;i++)
cout<<a[i]<<" ";
system("pause");
return 0;
}
注意memset操作时char型的。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int a[5];
memset(a,1,5);//这里改成memset(a,1,5 *sizeof(int))也是不可以的
for(int i = 0;i < 5;i++)
cout<<a[i]<<" ";
system("pause");
return 0;
}
需把memset(a,1,5);改成memset(a,1,20);即可。
功能:把buffer所指内存区域的前count个字节设置成字符c。
包含头文件:<string.h>
说明:返回指向buffer的指针。
注意这个函数是字符串函数,所以一定要包含字符串头文件。
使用方法:
1、memset() 函数常用于内存空间初始化。如:
char str[100];
memset(str,0,100);
2、memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;例:char a[100];memset(a, '/0', sizeof(a));
3、memset可以方便的清空一个结构类型的变量或数组。
如:
struct sample_struct
{
char csName[16];
int iSeq;
int iType;
};
对于变量
struct sample_strcut stTest;
一般情况下,清空stTest的方法:
stTest.csName[0]='/0';
stTest.iSeq=0;
stTest.iType=0;
用memset就非常方便:
memset(&stTest,0,sizeof(struct sample_struct));
如果是数组:
struct sample_struct TEST[10];
则
memset(TEST,0,sizeof(struct sample_struct)*10);
当然不是所有情况都有清空。有时如果不清空,可能会在测试当中出现野值。
例二:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[5];
memset(a,'1',5);
for(int i = 0;i < 5;i++)
cout<<a[i]<<" ";
system("pause");
return 0;
}
注意memset操作时char型的。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int a[5];
memset(a,1,5);//这里改成memset(a,1,5 *sizeof(int))也是不可以的
for(int i = 0;i < 5;i++)
cout<<a[i]<<" ";
system("pause");
return 0;
}
需把memset(a,1,5);改成memset(a,1,20);即可。
相关文章推荐
- 基于memset()函数的深入理解
- [乐意黎原创]JS 相关函数理解
- 理解over()函数
- 理解Vuex的辅助函数mapState, mapActions, mapMutations用法
- 回调函数理解的文章
- 【webAI】从3类函数中理解机器学习
- Linux驱动--函数,宏,结构体理解记录
- javascript中的函数currying(柯里化) 的理解
- 深入理解JavaScript中的函数
- 理解复杂的C/C++声明 const, typedef , 函数指针
- 回调函数,监听函数 关系 个人学习理解
- addLoadEvent(func)函数理解——《Javascript DOM编程艺术读书笔记》
- 从汇编角度来理解linux下多层函数调用堆栈运行状态
- 函数调用和给对象发消息(Runtime理解)
- memset函数使用详解
- Gabor函数参数理解
- C/C++ — memset() 函数详解及其作用介绍
- 理解 Thread.Sleep 函数
- [置顶] Python 模块里函数的调用方法和import语句的作用(适合初学者理解函数的调用)
- 深入理解javascript原型和闭包(2)——函数和对象的关系