社区
C++ 语言
帖子详情
memset为int型数组初始化问题
projoy
2009-07-09 04:15:07
memset不能为int型数组初始化吗?如
int a[100];
memset(a,1,sizeof(a));
可是a却被赋值成168430090,168430090.。。。。。。。。。
这是怎么回事?
...全文
3534
26
打赏
收藏
memset为int型数组初始化问题
memset不能为int型数组初始化吗?如 int a[100]; memset(a,1,sizeof(a)); 可是a却被赋值成168430090,168430090.。。。。。。。。。 这是怎么回事?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dos5gw
2010-03-25
打赏
举报
回复
[Quote=引用 5 楼 nbnitboy 的回复:]
就是对a指向的内存的sizeof(a)个字节进行赋值,每个都用ASCII为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4字节,合一起就是1000000010000000100000001,就等于16843009,就完成了对一个INT元素的赋值了。
[/Quote]
正解
ahuisafe
2009-07-10
打赏
举报
回复
memset 第二个参数指定的是char型的数组
故1为int型字节数不同
而分配是按内存的
所以不行
kloze11
2009-07-10
打赏
举报
回复
原来是按字节初始化的
SOS724164054
2009-07-10
打赏
举报
回复
用循环初始化整形!
Treazy
2009-07-09
打赏
举报
回复
[Quote=引用 7 楼 taodm 的回复:]
呃,多少人栽在过memset、memcpy上呀。没认真看过函数说明呀。
这是每个人的成长之路上必经吧。
[/Quote]
可能看了也是不理解!
需要的是真正的理解!
billow_zhang
2009-07-09
打赏
举报
回复
写一个初始化int类型参数的函数:
intmemset(int *imem, int cnt, int value)
{
int i;
for ( i = 0; i < cnt; i++ )
imem[i] = value;
}
现在可以这样使用了:
int a[100];
intmemset(a, sizeof(a) / sizeof(a[0]); 1);
seyjs
2009-07-09
打赏
举报
回复
呵呵,长见识了
tonforce
2009-07-09
打赏
举报
回复
5楼解释的很详细啊
受教了。
周药师
2009-07-09
打赏
举报
回复
[Quote=引用 4 楼 luwenzuo 的回复:]
可以这样初始化:
int a[100]={0};
[/Quote]
这样方便多了
blh
2009-07-09
打赏
举报
回复
[Quote=引用楼主 projoy 的帖子:]
memset不能为int型数组初始化吗?如
int a[100];
memset(a,1,sizeof(a));
可是a却被赋值成168430090,168430090.。。。。。。。。。
这是怎么回事?
[/Quote]
memset是按照字节进行内存设置的,你这样对int设置得到的就是0x01010101
ToddSong
2009-07-09
打赏
举报
回复
不好意思,如果是memset(a,0,sizeof(a)); 的话可以 但是如果是memset(a,1,sizeof(a));就不行了
ToddSong
2009-07-09
打赏
举报
回复
memset()可以初始化int啊。我刚才在试了试确实可以啊
#include<stdio.h>
main()
{
int a[]={1,2,3,4,5};
int i=0;
for(i=0;i<5;i++)
printf("%d ",a[i]);
memset(a,0,sizeof(a));
for(i=0;i<5;i++)
printf("%d ",a[i]);
}
jackzhhuang
2009-07-09
打赏
举报
回复
楼主不会认为都是111111……111111吧??
amossavez
2009-07-09
打赏
举报
回复
memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘\0’;例:char a[100];memset(a, \0, sizeof(a));
过去的我
2009-07-09
打赏
举报
回复
出错在第三个参数,不能用sizeof对数组指针操作,直接100就完事了
Crazy_hand
2009-07-09
打赏
举报
回复
memcpy v好像是可以拷贝int 型数组的。
Walf_ghoul
2009-07-09
打赏
举报
回复
小猪都解释完了,5楼的对错误分析的很好。。。
beyonddream2008
2009-07-09
打赏
举报
回复
5楼正解
mengjfu
2009-07-09
打赏
举报
回复
memset不能用于int
taodm
2009-07-09
打赏
举报
回复
呃,多少人栽在过memset、memcpy上呀。没认真看过函数说明呀。
这是每个人的成长之路上必经吧。
加载更多回复(6)
memset
本文探讨了使用
memset
函数
初始化
int
型
数组
时存在的
问题
。当
初始化
值为0时,通常不会出现
问题
;但若设定为非零值如1,则可能会导致意料之外的结果。这是因为
memset
按字节进行
初始化
,而非整数。
算法--最少硬币
问题
博客指出最少硬币
问题
即为多重背包
问题
,同时提到在
初始化
时,使用
memset
对
int
数组
初始化
除0和 - 1以外的数会失败,原因是
memset
对
int
型
按字节对内存块进行
初始化
。
正确使用
memset
本文探讨了使用
memset
函数
初始化
int
型
数组
时遇到的
问题
及原因分析。
memset
按字节赋值,导致
int
型
数组
初始化
为特定数值而非预期值。文章通过实例演示了这一现象,并提供了一种手动
初始化
的方法。
关于
memset
函数
本文详细介绍了如何使用
memset
和直接赋值的方法
初始化
int
型
数组
为最大值,避免了使用0导致的意外数值
问题
。
memset
函数的使用陷阱
本文详细探讨了
memset
函数的定义、用途及在实际编程中的常见误解。通过实例演示如何正确地使用
memset
将整
型
数组
初始化
为特定值,并解决了在尝试设置
int
型
数组
为2^31-1时遇到的
问题
。
C++ 语言
65,211
社区成员
250,516
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章