为什么单片机定义的数组是存放在数据存储器中

2019-07-15 13:14发布

为什么单片机定义的数组是存放在数据存储器中,而不是存放在程序存储器中,这样断电,那数组里面的数据不就丢失了吗,实在不解,请大神指教。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
dabing89
1楼-- · 2019-07-15 15:38
 精彩回答 2  元偷偷看……
18220521697
2楼-- · 2019-07-15 19:12
uchar code table[]={};
keil-uvision4
3楼-- · 2019-07-16 00:34
就储存的内容来讲,数组可以分为两种:一种是内容在程序运行中会改变的,还有一种内容在程序运行中不会改变的。所以第一种数组符合RAM的特性,就放在RAM中,第二种数组符合ROM的特性,就放在ROM中。

举个例子:
定义一个缓冲区:BYTE Buffer[];那么在程序中就会大量使用Buffer[n] = Variable或Variable = Buffer[n]这样的代码,也就是会对Buffer这个数组进行读写操作,所以放在RAM中。
定义一个字符串:CHAR String[] = "HelloWorld"; 这种方法在串口程序中比较常见,一般只有在UartPrintString(String)的时候才会用到,并没有出现元素的写操作,所以放在ROM中。

在来说一下这样做的原因:RAM既可读,又可写,而ROM只可读,不可写,所以RAM适合存放变量,ROM适合存放常量。

说白了,数组的存放位置主要依据数组的功能,并不是放在ROM中就一定好。

评分

参与人数 1积分 +1 收起 理由 左天任 + 1

查看全部评分

chenwei6991627
4楼-- · 2019-07-16 04:35
就和电脑的RAM和ROM是一个道理,自己想想把
电小龙
5楼-- · 2019-07-16 09:58
定义数组时加上code就是定义到code区了

一周热门 更多>