memset原理(为什么只能初始化成0或者-1)

原创 2013年12月02日 19:24:30

memset是依靠二进制进行初始化,int是4个字节,memset把每个字节都赋值,也就是说,比如memset(a,2,sizeof(a))  则00000010 00000010 00000010 00000010

而0,则是00000000 00000000 00000000 00000000结果是0

而-1,则是11111111 11111111 11111111 11111111结果也是-1

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
	int a[5];
	memset(a,2,sizeof(a));
	for (int i=1;i<=2;i++)
		printf("%d\n",a[i]);
	//00000010 00000010 00000010 00000010
	int s=pow(2,25)+pow(2,17)+pow(2,9)+2;
	printf("%d\n",s);
	return 0;
}


相关文章推荐

[原创]使用memset初始化数组为-1或…

相信很多人使用过memset来初始化数组为-1或0。 这时候数组元素正好是-1或0。 今天看了memset的效率问题后,才想起这是个恰巧。 之前一直以为memset是对每个元素赋值,而实际不是的。 ...

老生常谈,正确使用memset

前段项目中发现一个问题,程序总是在某个dynamic_cast进行动态转换时出异常,查了半天才发现问题原来是出在memset的使用上,虽然问题本身显而易见,但当处于几十万行代码量级中时,就变得不太那么...

C++ memset() 只能初始化为0或-1

memset()可以初始化字符数组; memset()可以初始化整数数组,但是初始化的值只能为0或者-1。...

化:尽量用memset将一个数组设置清零,而不是通过for循环逐个置0

优化:尽量用memset将一个数组设置清零,而不是通过for循环逐个置0 (2011-10-27 09:35:05) 转载▼ 标签:  优化技巧   memset虚表   数组置零 ...
  • lphbtm
  • lphbtm
  • 2016年03月14日 12:51
  • 2052

memset(a, -1, sizeof(int)) 的理解

-1的二进制表示1111... 32个1组成 memset是以字节为单位进行设置的 memset(a, -1, sizeof(int))设置sizeof(int)即4个四节,也就是设置a[0] ...

memset函数的正确使用与原理

头文件:#include 经常用这个初始化,没想到最后错误也是因为它。 函数原型为void* cb_memset(void* buffer, int b, size_t size) 这个函数...

memset函数的使用原理

竞赛中经常使用memset函数进行数组初始化,但只能初始为0, -1。哪怕写成: int num[N]; memset(num, 1, sizeof(num)); num[0]也是个很大的数。 今...

memset函数赋初值问题

我的第一篇博客。。。 今天写memset函数的时候遇到了老生常谈的话题,#include #include using namespace std; int main () { int ...
  • eo_yohe
  • eo_yohe
  • 2016年05月17日 18:59
  • 1029

字符串数组初始化0 与memset 0 效率的分析

转自http://hi.baidu.com/yangyangye2008/blog/item/cec4da0e3007c7366159f3c1.html 最近要分析程序的性能,所以上网查了查资料...
  • ace_fei
  • ace_fei
  • 2012年04月11日 10:06
  • 13474

数组的初始化与memset的注意事项

如果全部初始化为0,可以int count[26]={0};这样初始化为26个0     如果int count[26]={2015};,则只有第一个按照给定值初始化,其余初始化为0     这种...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:memset原理(为什么只能初始化成0或者-1)
举报原因:
原因补充:

(最多只允许输入30个字)