memset的进一步理解
来源:互联网 发布:深圳数控车床编程招聘 编辑:程序博客网 时间:2024/05/01 21:28
memset原型为:
extern void *memset(void *buffer, int c, int count);
用于把buffer所指的内存区域的前count个字节设置成字符,常用来初始化数组。使用时有两点需要注意:
1、其对内存的设置是按照字节进行的:举例说明
#include <stdio.h>
#include <string.h>
int main()
{
int a[5];
int i;
memset(a,0,sizeof(a));
for(i=0;i<5;i++)
printf("%d ",a[i]);
return 0;
}
上述代码将完成对数组a的初始化,所有元素为0
但如果将memset(a,0,sizeof(a));中的0改为1即memset(a,1,sizeof(a)),将出现问题,屏幕显示为:16843009 16843009 16843009 16843009 16843009,原因就是该函数对内存的设置是按字节进行的,我用的环境int类型为四个字节,因此它将1依填入每个字节,也就成了这种形式000000010000000100000001,它正好是16843009,应该注意这种情况
2、不要去试图改变只读内存,下面看代码:
#include <stdio.h>
#include <string.h>
int main()
{
char *s="Hello World!";
memset(s,'G',5);//这里有问题
printf("%s",s);
return 0;
}
这段代码根本就运行不起来,原因就是memest去试图改变只读内存的内容,这一点也要特别注意!
- memset的进一步理解
- memset() 与 memcpy() 的进一步理解
- webservice的进一步理解
- LiveMesh的进一步理解
- 多态性的进一步理解
- 指针的进一步理解
- 宏的进一步理解
- NSRunLoop的进一步理解
- NSRunLoop的进一步理解
- NSRunLoop的进一步理解
- NSRunLoop的进一步理解
- NSRunLoop的进一步理解
- const的进一步理解~
- ajax的进一步理解
- HashMap的进一步理解
- memset的理解
- 三层架构的进一步理解
- 三层架构的进一步理解
- 服务器开发要点
- 25个你应该阅读的Android网站
- 网络日志(2010.4.17)
- 从数学分析的角度解决约瑟夫环
- 第一次来CSDN
- memset的进一步理解
- MFC下屏蔽ESC、回车键以及ALT+F4
- [URAL 1553]Caves and tunnels(树链剖分)
- u-boot启动过程分析(源码)
- 一个关于HQL预编译的简单问题
- 还是要读英文原著
- Fzu_1062 洗牌问题
- 谈做事与为国做贡献
- 学习struts2 的select标签