memset函数给int初始化

请问memset可以给int型变量和int数组赋值么?例如:inta;intb[10];memset(a,0,sizeof(a));memset(b,0,sizeof(b... 请问memset可以给int型变量和int数组赋值么?例如:
int a;
int b[10];
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
?是不是int型变量使用a=0赋值就行了?谢谢!
另外如果一个int c[10];数组做了定义,但后面直接使用c[0]=1; c[1]=2; ...进行赋值了,并没有使用c[10]={0}或是用memset设置初始值,这样有问题么?谢谢!
展开
 我来答
华秋婵月
2009-12-27 · TA获得超过1001个赞
知道小有建树答主
回答量:208
采纳率:0%
帮助的人:189万
展开全部
解答:
memset 要慎用。
对于int型数组,我们可以赋0、-1,其他的值赋到数组里后就不再是原数。
(这一点没有办法讲清楚)
对于bool型数组,可以赋true或false,两者皆不会发生错误。
char数组是通用的。

补充:
不会有问题。
c[10]={0};这种格式最好不用。
虽然一开始定义的数组内部都是随机数,但是不影响后面的赋值,你可以放心的赋值。但要注意的是,在main函数内部(或其他函数)定义的int、bool、char等类型的数组是动态数组,所以如果直接使用,是不可以的(具体情况具体对待),memset此时起到了很大的作用。
我本人喜欢开静态的(无需初始化,在函数外部定义),int型都是0,char都是‘\0’,至于bool数组,最好用memset赋(我没试过。。。)。

最好还是用静态数组,这样你调试查看数组的时候不会出现地址,而查看不了数据。静态数组真的比较好!
ubai
2009-12-23 · TA获得超过481个赞
知道小有建树答主
回答量:583
采纳率:50%
帮助的人:294万
展开全部
memset memcpy 都是 string 字符串处理函数,不是为int 型做的。

0 又 等于 NULL
所以 memset 0 没问题。
但是 其它数字会看作是 字符,不会对应相应的 整形数字。
系统把那字符 计算成整形结果后去储存,所以得到 奇怪的数字。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式