如何给动态分配的数组赋值?

hcwsdiy 2009-04-19 09:36:10
typedef struct
{
int x1;
int x2;
int x3;
int x4;
}*data,node;

void main()
{
data p;
p=(data)malloc(3*sizeof(node));
我想要p[0],p[1],p[2]中的值全为0,
一定要这样写吗?
for(i=0;i<3;i++)
{
p[i].x1=0;
p[i].x2=0;
p[i].x3=0;
}
有没有类似数组初始化一样简单的赋值方法?
...全文
597 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly_new 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 baihacker 的回复:]
for(i=0;i <3;i++)
{
p[i].x1=0;
p[i].x2=0;
p[i].x3=0;
}


其实,你的这种赋值方法效率比较高的说,嘿嘿.
[/Quote]

没有永远的绝对
yingye323 2009-04-19
  • 打赏
  • 举报
回复
学习.
lyserver 2009-04-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 baihacker 的回复:]
for(i=0;i <3;i++)
{
p[i].x1=0;
p[i].x2=0;
p[i].x3=0;
}


其实,你的这种赋值方法效率比较高的说,嘿嘿.
[/Quote]
同时,比使用memset速度要快一些,毕竟少了函数调用、堆栈平衡等操作。
jackyjkchen 2009-04-19
  • 打赏
  • 举报
回复
因此就算是memset(p,0,10000000);还是测不出时间消耗来
jackyjkchen 2009-04-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 baihacker 的回复:]
for(i=0;i <3;i++)
{
p[i].x1=0;
p[i].x2=0;
p[i].x3=0;
}


其实,你的这种赋值方法效率比较高的说,嘿嘿.
[/Quote]

其实高也是理论上的,内存的存取速度每秒几十G,清零操作没有运算负担,基本能达到内存的写入速度
sh365 2009-04-19
  • 打赏
  • 举报
回复
memset(p, 0, 3 * sizeof(node));
就是对从得到的首地址指针开始,大小为个数乘以sizeof(结构体)的空间memset0
tianya0609 2009-04-19
  • 打赏
  • 举报
回复
学习
liliangbao 2009-04-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 baihacker 的回复:]
for(i=0;i <3;i++)
{
p[i].x1=0;
p[i].x2=0;
p[i].x3=0;
}


其实,你的这种赋值方法效率比较高的说,嘿嘿.
[/Quote]
同意,不要以貌取人呦~
baihacker 2009-04-19
  • 打赏
  • 举报
回复
for(i=0;i <3;i++)
{
p[i].x1=0;
p[i].x2=0;
p[i].x3=0;
}


其实,你的这种赋值方法效率比较高的说,嘿嘿.
baihacker 2009-04-19
  • 打赏
  • 举报
回复
额,我少乘个3
baihacker 2009-04-19
  • 打赏
  • 举报
回复
memset(p, 0, sizeof(*p));
airtrack 2009-04-19
  • 打赏
  • 举报
回复
memset(p, 0, 3 * sizeof(node));
qqwx_1986 2009-04-19
  • 打赏
  • 举报
回复
memset(p,0,3*sizeof(node));

69,373

社区成员

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

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