memset函数疑惑

Shadow0418 2013-10-24 10:58:29
memset(a,0,sizeof(a));可以把数组a的元素全部置为0
为啥用这个函数把数组a置为其它的数就不行了呢??????
...全文
206 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
allenltiverson 2013-10-25
  • 打赏
  • 举报
回复
“memset函数是以字节为单位进行赋值的操作的”楼上说的对,所以他理论上是应该跟任何对象进行初始化的。但是对于一些包含STL变量,指针等数据成员的对象不该这么干
  • 打赏
  • 举报
回复
引用 5 楼 u010286751 的回复:
#include<stdio.h>
#include <string.h>
int main()
{
 int a[10],i;
 memset(a,1,sizeof(a));
 for(i=0;i<10;i++)
   printf("%d ",a[i]);
   return 0;
}
初始为1不行了???输不出来
memset函数是以字节为单位进行赋值的操作的 看看你的数组类型 数组中所有元素都是 0x01010101h
Shadow0418 2013-10-24
  • 打赏
  • 举报
回复
#include<stdio.h>
#include <string.h>
int main()
{
 int a[10],i;
 memset(a,1,sizeof(a));
 for(i=0;i<10;i++)
   printf("%d ",a[i]);
   return 0;
}
初始为1不行了???输不出来
  • 打赏
  • 举报
回复
引用 2 楼 max_min_ 的回复:
memset函数是以字节为单位进行赋值的操作的 看看你的数组类型
++ 初始为零,符合常理呀...
zhaokai115 2013-10-24
  • 打赏
  • 举报
回复
不超过0xFF都可以
max_min_ 2013-10-24
  • 打赏
  • 举报
回复
memset函数是以字节为单位进行赋值的操作的 看看你的数组类型
追风筝的孩子 2013-10-24
  • 打赏
  • 举报
回复
其实是可以的..但一个数组你要置为其他数,是不是得用个for循环呢?或者用memcpy也行..其实你不置为0也无所谓,撑死了也就留下点堆栈信息,除非特别是牛x的黑客..要不然那丁点堆栈信息真没啥用

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧