在单片机C语言中const unsigned char ov529[5]={0xff,0xff,0xff,SYNC_ID,0x00}前面加const是什么意思??
在嵌入式的纯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等只读存储器,则不同的单片机对此类异常的处理方式不一样,结果也就不一样。当世型然,有一点是一样的,那就是肯定修改不了的。
相当于定义了一堆的常数,常数如100,不可以改变。你可以了解一下常量和变量的区别
const表早渣示内容不被修改,相当于常悄侍数
在51C语言中,const声明的一般被编陆运悄译器存在ROM中
表示常量,不允许修改里面的内容。
也就是你如果改变数组里面的值会报错。
常量。