打印

如何一下子清除整个数组内存中的元素?

[复制链接]
2707|15
手机看帖
扫描二维码
随时随地手机跟帖
沙发
mohanwei| | 2013-2-19 17:04 | 只看该作者
memset(buff,0,sizeof(buff));
但编译器库函数里用的也是for……

使用特权

评论回复
板凳
airwill| | 2013-2-19 17:50 | 只看该作者
内存块, CPU 没有快速清理它的功能. 所以不管用什么语言, 都得这样处理.
另外, 就是让 DMA 来完成这个事情. 都是一样的操作.

使用特权

评论回复
地板
平常人| | 2013-2-19 22:24 | 只看该作者
“想填饱肚子,不要用嘴”,只好用鼻刺喽。。。。。。

LZ难道跟for有仇吗?为什么不用?难道又是那个误人子弟的老师出的歪题?!

使用特权

评论回复
5
大道至简| | 2013-2-19 22:57 | 只看该作者
memset(buf,0,sizeof(buf));

使用特权

评论回复
6
xxlin1984| | 2013-2-20 09:45 | 只看该作者
1. 加个标记,标记数组为空。当然数组内容还在,但咱当他不存在。
2. 设两数组一指针,数组1#正常用,数组2#常为空,指针平时指向1#,清空时指向2#。

使用特权

评论回复
7
28182900|  楼主 | 2013-2-20 09:46 | 只看该作者
平常人 发表于 2013-2-19 22:24
“想填饱肚子,不要用嘴”,只好用鼻刺喽。。。。。。

LZ难道跟for有仇吗?为什么不用?难道又是那个误人 ...

:lol
木有。。这次跟老师木关系

使用特权

评论回复
8
zhaofy521| | 2013-2-20 11:57 | 只看该作者
LZ要有了好方法公布下

使用特权

评论回复
评论
28182900 2013-2-20 14:42 回复TA
舔一口 
9
refee| | 2013-2-20 12:00 | 只看该作者
楼主在故意出难题呢……;P

使用特权

评论回复
10
dirtwillfly| | 2013-2-20 21:16 | 只看该作者
xxlin1984 发表于 2013-2-20 09:45
1. 加个标记,标记数组为空。当然数组内容还在,但咱当他不存在。
2. 设两数组一指针,数组1#正常用,数组2 ...

赞一个,这两种方法很好。我只想到了第一种。

使用特权

评论回复
11
谈的元| | 2013-2-20 22:28 | 只看该作者
断电:lol

使用特权

评论回复
12
zhaoyu2005| | 2013-2-21 09:01 | 只看该作者
1.加个标记为空,那如果对一个元素赋值,其他元素就得谨慎访问,否则会出现意想不到的错误
2.两个数组一个指针,只不过是换了存储位置,如果两个都被赋值了,那接下来咋办?

用循环清除是正道,有时能玩技巧,有时还是老实用笨方法吧,有时笨方法是最有效的方法

使用特权

评论回复
13
xxlin1984| | 2013-2-21 09:42 | 只看该作者
回LS,
第一种方法其实就是类似环形缓冲区的简化,“清空”表示数据无效,而非为0x00或0xff。
第二种方法本来是想在第一种的基础上加上,“清空”后,读回的数据数据为0x00或0xff。--仔细想想确实有隐患。

不太赞同“正道”的说法,合适的程序就是好程序。例如链表就是通过对访问方式的限制,来达到快速操作的目的

使用特权

评论回复
14
zhaoyu2005| | 2013-2-22 09:42 | 只看该作者
xxlin1984 发表于 2013-2-21 09:42
回LS,
第一种方法其实就是类似环形缓冲区的简化,“清空”表示数据无效,而非为0x00或0xff。
第二种方法本 ...

你要先明白 清空 和 表示数据无效 是两个概念,不一样的,清空 是恢复成默认值,不一定是0 或者 ff,可以是其他值,只要保持一致的判断即可;表示无效,只是当前数据不可采用,至于是什么数据就无所谓了。
如果对单一地址,清空和标记无效,问题不大,因为都会经过再赋值,然后使用
如果对数组,不对全部元素进行赋值,无效标记就不能取消

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:工作永远干不完,生命却一直在倒计时

100

主题

1127

帖子

2

粉丝