关于memset函数的用法
来源:互联网 发布:nginx 图片加载不出来 编辑:程序博客网 时间:2024/06/11 00:52
函数原型:
void *memset(void *s, int c, size_t n);
memset:作用是在一段内存块中填充某个给定的值,它对较大的结构体或数组进行清零操作的一种最快方法。
1.如果用memset(a,1,20);
就是对a指向的内存的20个字节进行赋值,每个都用ASCII为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4 字节,合一起就是1000000010000000100000001,就等于16843009,就完成了对一个INT元素的赋值了
2.memset() 函数常用于内存空间初始化。如:
char str[100];
memset(str,0,100);
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);
另外:
如果结构体中有数组的话还是需要对数组单独进行初始化处理的。
因为memset是以字节为单位就是对array指向的内存的4个字节进行赋值,每个都用ASCII为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4字节,合一起就是00000001000000010000000100000001,就等于16843009,就完成了对一个INT元素的赋值了。
所以用memset对非字符型数组赋初值是不可取的!
例如有一个结构体Some x,可以这样清零:
memset( &x, 0, sizeof(Some) );
如果是一个结构体的数组Some x[10],可以这样:
memset( x, 0, sizeof(Some)*10 );
void *memset(void *s, int c, size_t n);
memset:作用是在一段内存块中填充某个给定的值,它对较大的结构体或数组进行清零操作的一种最快方法。
1.如果用memset(a,1,20);
就是对a指向的内存的20个字节进行赋值,每个都用ASCII为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4 字节,合一起就是1000000010000000100000001,就等于16843009,就完成了对一个INT元素的赋值了
2.memset() 函数常用于内存空间初始化。如:
char str[100];
memset(str,0,100);
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);
另外:
如果结构体中有数组的话还是需要对数组单独进行初始化处理的。
因为memset是以字节为单位就是对array指向的内存的4个字节进行赋值,每个都用ASCII为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4字节,合一起就是00000001000000010000000100000001,就等于16843009,就完成了对一个INT元素的赋值了。
所以用memset对非字符型数组赋初值是不可取的!
例如有一个结构体Some x,可以这样清零:
memset( &x, 0, sizeof(Some) );
如果是一个结构体的数组Some x[10],可以这样:
memset( x, 0, sizeof(Some)*10 );
0 0
- 关于memset函数的用法
- 关于memset函数的用法
- memset函数的用法
- memset函数的用法
- memset函数的用法
- memset函数的用法
- memset函数的用法
- memset函数的用法
- memset函数的用法
- 关于函数memset的若干用法和注意事项
- 关于memset,memcpy的用法
- 关于memset函数的使用
- 关于memset() 函数的使用
- 关于memset函数的调用
- 函数用法 --- memset函数
- [转]memset函数的用法
- c中的memset函数的用法?
- memcmp和memset函数的用法
- Berkeley套接字的一些基本知识
- UI UI基本控件
- 几种线程池的实现算法分析
- php int 类型长度是有限制的
- 研磨设计模式之适配器模式(Adapter)-场景问题
- 关于memset函数的用法
- E-R图示例(2 工厂管理)
- android 画圆环表示收益所占比重
- java实现 数据结构之8大排序
- web service(SOAP)与HTTP接口的区别
- C++类—重载操作符
- 配置Maven环境变量
- MyEclipseMyEclipse内存不足配置
- Data source rejected establishment of connection, message from server: "Too many connections"