在单片机C语言中const unsigned char ov529[5]={0xff,0xff,0xff,SYNC_ID,0x00}前面加const是什么意思??

 我来答
zoogar
2010-06-02
知道答主
回答量:26
采纳率:0%
帮助的人:0
展开全部
在嵌入式的纯C里面,const有两层意思:
1. 告诉编译器这个变量是只读的,如果发现代码里面有直接修改该变量的语句,则编译时报错。这一点与操作系统下的C语言是一样的。

2. 与该变量的储存区域有关。一般情况下,const变量会被存放在只读区域,例如ROM、Flash等(但不是绝对的)。
以下表达式可以获取变量的存放地址(也就是可以通过它知道存放区域)
(unsigned long)ov529
如果单片机支持printf,则可以输出以查看:
printf("Addr = 0x%.8X\n", (unsigned long)ov529);

此外,你还可以试图去修改const定义的变量的值,看看会出现什么情况:
unsigned char *p = (unsigned char *)ov529;
(*p) = 0x55;
运行结果会是怎样呢?我只能告诉你,有很多可能情况:
如果ov529的存放区域是RAM等可读写的存储器,则一点问题都没有;
可是如果ov529的存放区域是ROM、Flash等只读存储器,则不同的单片机对此类异常的处理方式不一样,结果也就不一样。当然,有一点是一样的,那就是肯定修改不了的。
wangjinlongd
2010-06-02
知道答主
回答量:46
采纳率:0%
帮助的人:18.6万
展开全部
相当于定义了一堆的常数,常数如100,不可以改变。你可以了解一下常量和变量的区别
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gefsiqbb
2010-06-02 · TA获得超过317个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:89.5万
展开全部
const表示内容不被修改,相当于常数

在51C语言中,const声明的一般被编译器存在ROM中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
德银河Nh
推荐于2018-03-13 · TA获得超过356个赞
知道小有建树答主
回答量:255
采纳率:0%
帮助的人:302万
展开全部
表示常量,不允许修改里面的内容。
也就是你如果改变数组里面的值会报错。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huangdl123
2010-06-02 · TA获得超过476个赞
知道小有建树答主
回答量:638
采纳率:0%
帮助的人:457万
展开全部
常量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式