标题: 关于c语言的问题,有没有code有什么区别 [打印本页]

作者: shenshaohai    时间: 2019-11-27 14:35
标题: 关于c语言的问题,有没有code有什么区别
uchar code str[]=" hello";
uchar  str[]=" hello";
有没有code有什么区别
作者: liaojiaao    时间: 2019-11-27 15:23
我不太清楚,以前看书说是放在有个专门的区域里面不占用程序空间
作者: xuxiaochunabcd    时间: 2019-11-27 15:36
code表示保存在程序存储器中ROM中,没有code表示保存在数据存储器中RAM中
作者: tyrl800    时间: 2019-11-27 16:30
ode的作用是告诉单片机,我定义的数据要存储在ROM(程序存储区)里面,写入后就不能再更改,其实是相当与汇编里面的寻址MOVC(好像是),因为C语言中没办法详细描述存入的是ROM还是RAM(存储器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM(存储器)的意思。
程序可以简单的分为code(程序)区,和data (数据)区,code区在运行的时候是不可以更改的,data区放全局变量和临时变量,是要不断的改变的,cpu从code区读取指令,对data区的数据进行运算处理,因此code区存储在什么介质上并不重要,象以前的计算机程序存储在卡片上,code区也可以放在rom里面,也可以放在ram里面,也可以放在flash里面(但是运行速度要慢很多,主要读flash比读ram要费时间),因此一般的做法是要将程序放到flash里面,然后load到 ram里面运行的;DATA区就没有什么选择了,肯定要放在RAM里面,放到rom里面改动不了。
作者: 噗噗噗p    时间: 2019-11-27 16:42
占用内存的问题,如果没有code程序吧数据存储在RAM,有则存储在ROM中。
作者: bh2030693    时间: 2019-11-27 17:06
对于普通51单片机,内部分为“程序存储区”和“数据存储区”。
程序存储区ROM存储的是单片机程序代码、常量、数据表格等,不可修改;
数据存储区RAM存储的是单片机数据代码,变量等,可以修改。
定义有code的变量(数组)会定义到程序存储区;
定义无code的变量(数组)会定义到数据储区。
因为数据存储区空间有限,所以对于不需要改变的常量/数组/表格就定义到程序存储区。
一个常量不是很大的话,即可以定义到程序存储区,也可以定义到数据存储区;而一个变量只能定义到数据存储区。

作者: pcbboy    时间: 2019-11-27 17:51
code表示保存在程序存储器中ROM中,没有code表示保存在数据存储器中RAM中
楼上正解!
作者: hange_v    时间: 2019-11-27 19:07
这个就相当于const,加上code修饰的保存在FLASH中,不占用RAM空间
作者: csmyldl    时间: 2019-11-27 19:41
使用code时,str数组所定义的字符与程序存放在一起,程序不能更改数组的值,通常不变的一些值用此方法定义,不使用code,默认字符数据存放在内存中,数组str的值可随时用程序修改,在内存充足的情况下一般没去关注它存在哪 里
作者: shenshaohai    时间: 2019-11-27 19:57
xuxiaochunabcd 发表于 2019-11-27 15:36
code表示保存在程序存储器中ROM中,没有code表示保存在数据存储器中RAM中

可以在说的具体一点吗  小白不太明白
作者: yzwzfyz    时间: 2019-11-27 20:30
学C,不学单片机原理,所以你无法理解。
板凳正解。
作者: oldwood_hmgh    时间: 2019-11-27 21:49
如果有code则分配ROM空间存贮 ,但程序运行中不能改写这个数据了,适用于不变的数据,例如提示信息、字符代码等等,如果没有code则分配RAM空间存贮 ,程序运行时可以改变这个数据,例如计数次数等等,程序运行时不改变的数据尽量用code,因为RAM一般比较少,是宝贵的。
作者: cphnkj188    时间: 2019-11-28 10:40
ROM和RAM的区别,用了以后可以节约内存空间
作者: james79    时间: 2019-11-28 11:47
没有code,程序默认将该数组保存在内存里,加上code,程序会将该数组保存在外部flash,节省了内存空间。
作者: TTQ001    时间: 2019-11-29 09:02
单片机内部存储器分为程序存储区 (ROM) 和数据存储区 (RAM)。没有code数据存储在RAM,有则存储在ROM中

作者: QWE4562012    时间: 2020-7-10 10:05
tyrl800 发表于 2019-11-27 16:30
ode的作用是告诉单片机,我定义的数据要存储在ROM(程序存储区)里面,写入后就不能再更改,其实是相当与汇 ...

讲得非常好   我看了两遍
作者: Chellson    时间: 2020-7-10 10:37
code会给你分配ROM空间存贮
作者: lfei01    时间: 2020-7-25 17:50
学习了,谢谢!也就是说为是省REM 每次都加上,对吧!
作者: lxbhcy    时间: 2020-7-28 10:42
有code就是写死了的




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1