const加不加?

2019-07-19 21:21发布

const u8 TEXT_Buffer[]={"!Good Luck to My Father!"};
为什么要加const,不加可以吗?const表示是固定在flash中,在程序运行时不能改变,那不加会有什么影响吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
27条回答
q546163199
1楼-- · 2019-07-21 04:03
ofourme 发表于 2016-1-28 11:17
因为你函数的形参和实参不一致啊。强制类型只是掩盖了错误。如果编译器把const数据放在了flash区,你在函 ...

那是不是可以理解成,如果不去掉const的话,,TEXT_Buffer是一个指向const u8型数组的指针,而函数的入口参数需要一个指向u8型数组的指针,所以必须将TEXT_Buffer强制转化为,一个指向u8型数组的指针,对吧?

如果去掉const的话,TEXT_Buffer表示一个指向 u8型数组的指针,所以在函数调用的时候,就可以直接写成TEXT_Buffer,我这样理解对吗?
q546163199
2楼-- · 2019-07-21 06:02
jiutianshenjian 发表于 2016-1-28 11:16
这跟你函数形参有关系。形参里没写const,是u8 *,你定义的是const u8类型数组的话,就得跟形参类型匹配。 ...

我改了之后,发现,函数形参,改不成const u8*pBuffer的形式,一改,就发生错误
q546163199
3楼-- · 2019-07-21 09:01
 精彩回答 2  元偷偷看……
q546163199
4楼-- · 2019-07-21 10:26
jiutianshenjian 发表于 2016-1-28 11:16
这跟你函数形参有关系。形参里没写const,是u8 *,你定义的是const u8类型数组的话,就得跟形参类型匹配。 ...

我把这个const问题总结下

如果不去掉const的话,,TEXT_Buffer是一个指向const u8型数组的指针,而函数的入口参数需要一个指向u8型数组的指针,所以必须将TEXT_Buffer强制转化为,一个指向u8型数组的指针

如果去掉const的话,TEXT_Buffer表示一个指向u8型数组的指针,所以在函数调用的时候,就可以直接写成TEXT_Buffer
应该就是这个意思了吧?
ofourme
5楼-- · 2019-07-21 14:45
q546163199 发表于 2016-1-28 11:43
那是不是可以理解成,如果不去掉const的话,,TEXT_Buffer是一个指向const u8型数组的指针,而函数的入口 ...

是的。
jiutianshenjian
6楼-- · 2019-07-21 17:27
 精彩回答 2  元偷偷看……

一周热门 更多>