const加上有什么用呢

[复制链接]
1910|14
 楼主| myidear 发表于 2016-5-24 09:27 | 显示全部楼层 |阅读模式
const u8 TEXT_Buffer[]={"!Good Luck to My Father!"};
为什么要加const,不加可以吗?const表示是固定在flash中,在程序运行时不能改变,那不加会有什么影响吗?

aozima 发表于 2016-5-24 11:59 | 显示全部楼层
占RAM多呗
bairurui0713 发表于 2016-5-24 17:13 | 显示全部楼层
RAM很小的,能不放就尽量不放RAM中了
Classover 发表于 2016-5-24 21:52 | 显示全部楼层
不加的话TEXT_Buffer表示是内存里面的数组,会占用!Good Luck to My Father!这么多个字节的内存.  如果加就是放在flash里面,不会占用内存.
gaoxiansheng 发表于 2016-5-25 14:20 | 显示全部楼层
不加的话就会放到RAM中,也能正常运行,对于常量而言其值在运行过程中不会发生改变,放在flash中比放到RAM中更合适,RAM要省着用。放在RAM中的好处是可以随意修改其值,且写入速度快,但常量不用修改其值,flash的读取速度和RAM读取差不太多,故放到flash中合理。其次也是出于严谨的要求,表明这个text_buffer是不能更改的,程序员看到的时候会注意不要去修改,编译器也能帮忙发现其值是否改变过并告警
hello_galaxy 发表于 2016-5-25 21:55 | 显示全部楼层
const是放在flash中吗?我觉得跟存储没关系,加不加都是一个地方。没看到有说放在flash中的资料。
C语言里,const是只读的意思。
加了const,如果程序哪里对其进行写操作,编译就会报错。
例如你不想让a值初始化以后再改变。const int a = 1;

其他地方不能对a赋值,你下面写个a = 2;就报错。

如果你不加,a被改了你也不知道。

还有函数里的形参,如字符串处理那几个,输入的源字符串不改变的最好加const,可以防止意外被改变。
万一哪里修改了就会报错。
低八度的声线 发表于 2016-5-26 09:34 | 显示全部楼层
一般编译的时候,编译器会优化const变量放到flash区域,如果你用volatile const修饰的话,就是指定放到RAM中
liwandong2007 发表于 2016-5-26 09:40 | 显示全部楼层
const 会放在flash中
lt1231 发表于 2016-5-26 17:51 | 显示全部楼层
不加的话,这个数组很可能会改变,又会占用RAM空间的。
merry_zsp 发表于 2016-5-26 22:35 | 显示全部楼层
加业可以,不加也可以。内存不够用的话,就加const吧
hello牟 发表于 2016-5-27 10:14 | 显示全部楼层
const应该是c语言的关键字,是不可改变,固定的意思。
大白农 发表于 2016-5-28 15:05 | 显示全部楼层
迎来保存不改变的东西,比如液晶菜单的显示字符等。
nobleliom 发表于 2016-5-28 21:10 | 显示全部楼层
低八度的声线 发表于 2016-5-26 09:34
一般编译的时候,编译器会优化const变量放到flash区域,如果你用volatile const修饰的话,就是指定放到RAM ...

具体要看编译器的支持程度,编译器不同,结果也是不同的。
林维东 发表于 2016-7-4 21:54 | 显示全部楼层
如果加就是放在flash里面,不会占用内存.
林维东 发表于 2016-7-4 21:55 | 显示全部楼层
为何 我加上了 与 不加的话 ,编译的信息结果是一样的呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

249

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部