memset函数 那你改用memset(a,1,12)会有问题吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 问题出在sizeof()这个函数上。这个函数返回长度和数组实际编号是不一样的。数组编号从0开始 memset()函数是对内存块的每个字节初始化,而你的数组类型是短整型的,每个字节都是1,那显然不对,相当于成员的值变成了0x101.想你这种情况,不能用memset()来初始化每个成员为1。--------------------我设计的Koodoo语言:http://www.bluespace.com.cn/koodoo/pdf/koodooref.chm void main(){char a[12];memset( a,1,sizeof(a) );printf("%d",(int)*a );}这样就可以了,你的问题关键在1.用printf的时候打印a的时候没有转换格式2.memset里面的1是int,注意数据类型你犯的是那种我也不晓得,我不知道你是怎么知道数组a里各元素的值不是1的 楼主上了个大当!memset(a,1,sizeof(a));这段代码的意思是把a数组的前24个字节都设置为1.每个short占了两个字节,所以每个字节的最末位都便称了"1",高位变成了"0",而两个字节才表示一个short,所以两个字节组合起来的short就是00000001 00000001,这个值表示成10进制就是"257"./***********************************那你改用memset(a,1,12)会有问题吗?2楼的兄弟,你的也是有问题,你只是将a的前6个元素改的每一个字节改成了1,所以前六个元素都是"00000001 00000001",因此前6个元素按10进制是257,而后6个元素泽没有被正确初始化,是系统的随机值. 如果想每个成员赋成1, 个人感觉也只能通过循环赋值 ,像memset一般是为整个数组赋0值来用的。 log4cplus使用配置文件问题 openGL纹理贴图 文件读到编辑框 界面控件多,关于调整窗口大小的问题,拜请各位高手指点。 急!,启动线程,传递一个带CStringArray的类,总是运行提示错误,代码简要如下 关于定时器的问题 简单题~long型如何转换为CString类型?并且在edit中输出? 代码运行速度慢 编程修改本机ip地址如何实现? 讨论mfc著作,快进啊。 高分寻求解决方案,关于服务端程序的稳定性。。。 请问如何编程使本机自动获得ip地址?
想你这种情况,不能用memset()来初始化每个成员为1。
--------------------
我设计的Koodoo语言:
http://www.bluespace.com.cn/koodoo/pdf/koodooref.chm
{
char a[12];
memset( a,1,sizeof(a) );
printf("%d",(int)*a );
}
这样就可以了,你的问题关键在
1.用printf的时候打印a的时候没有转换格式
2.memset里面的1是int,注意数据类型
你犯的是那种我也不晓得,我不知道你是怎么知道数组a里各元素的值不是1的
memset(a,1,sizeof(a));
这段代码的意思是把a数组的前24个字节都设置为1.每个short占了两个字节,所以每个字节的最末位都便称了"1",高位变成了"0",而两个字节才表示一个short,所以两个字节组合起来的short就是00000001 00000001,这个值表示成10进制就是"257".
/***********************************
那你改用memset(a,1,12)
会有问题吗?
2楼的兄弟,你的也是有问题,你只是将a的前6个元素改的每一个字节改成了1,所以前六个元素都是"00000001 00000001",因此前6个元素按10进制是257,而后6个元素泽没有被正确初始化,是系统的随机值.