打印

const加上有什么用呢

[复制链接]
1549|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
myidear|  楼主 | 2016-5-24 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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里面,不会占用内存.

使用特权

评论回复
5
gaoxiansheng| | 2016-5-25 14:20 | 只看该作者
不加的话就会放到RAM中,也能正常运行,对于常量而言其值在运行过程中不会发生改变,放在flash中比放到RAM中更合适,RAM要省着用。放在RAM中的好处是可以随意修改其值,且写入速度快,但常量不用修改其值,flash的读取速度和RAM读取差不太多,故放到flash中合理。其次也是出于严谨的要求,表明这个text_buffer是不能更改的,程序员看到的时候会注意不要去修改,编译器也能帮忙发现其值是否改变过并告警

使用特权

评论回复
6
hello_galaxy| | 2016-5-25 21:55 | 只看该作者
const是放在flash中吗?我觉得跟存储没关系,加不加都是一个地方。没看到有说放在flash中的资料。
C语言里,const是只读的意思。
加了const,如果程序哪里对其进行写操作,编译就会报错。
例如你不想让a值初始化以后再改变。const int a = 1;

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

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

还有函数里的形参,如字符串处理那几个,输入的源字符串不改变的最好加const,可以防止意外被改变。
万一哪里修改了就会报错。

使用特权

评论回复
7
低八度的声线| | 2016-5-26 09:34 | 只看该作者
一般编译的时候,编译器会优化const变量放到flash区域,如果你用volatile const修饰的话,就是指定放到RAM中

使用特权

评论回复
8
liwandong2007| | 2016-5-26 09:40 | 只看该作者
const 会放在flash中

使用特权

评论回复
9
lt1231| | 2016-5-26 17:51 | 只看该作者
不加的话,这个数组很可能会改变,又会占用RAM空间的。

使用特权

评论回复
10
merry_zsp| | 2016-5-26 22:35 | 只看该作者
加业可以,不加也可以。内存不够用的话,就加const吧

使用特权

评论回复
11
hello牟| | 2016-5-27 10:14 | 只看该作者
const应该是c语言的关键字,是不可改变,固定的意思。

使用特权

评论回复
12
大白农| | 2016-5-28 15:05 | 只看该作者
迎来保存不改变的东西,比如液晶菜单的显示字符等。

使用特权

评论回复
13
nobleliom| | 2016-5-28 21:10 | 只看该作者
低八度的声线 发表于 2016-5-26 09:34
一般编译的时候,编译器会优化const变量放到flash区域,如果你用volatile const修饰的话,就是指定放到RAM ...

具体要看编译器的支持程度,编译器不同,结果也是不同的。

使用特权

评论回复
14
林维东| | 2016-7-4 21:54 | 只看该作者
如果加就是放在flash里面,不会占用内存.

使用特权

评论回复
15
林维东| | 2016-7-4 21:55 | 只看该作者
为何 我加上了 与 不加的话 ,编译的信息结果是一样的呢?

使用特权

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

本版积分规则

24

主题

249

帖子

0

粉丝