在下面的代码中,有人可以解释第二个参数是什么吗?它是“数据的常量指针”。
谢谢
答案 0 :(得分:4)
第二个参数是一个指向const数据的const指针。
const uint8_t * const == uint8_t const * const
uint8_t const * const == const pointer to const uint8_t
为了帮助你,请考虑向后阅读:
int*
- 指向int int const *
- 指向const int的指针int * const
- const指向int 等
所以在你的例子中,const uint8_t *const data
是"数据const +指针uint8_t const" => const数据的const指针。
答案 1 :(得分:2)
假设代码是C或C ++,第二个参数是指向常量数据的常量指针(变量名称为data
)。该函数承诺它最多会读取{而不是写入data
参数指向的内存。在正常假设下,数据类型是无符号字节。
答案 2 :(得分:2)
const uint8_t *const data
实质上意味着该函数无法更新data
参数或其指向的对象。 IOW,您无法将data
设置为指向函数中的其他对象。
简而言之:
const T *p -- p is writable, *p is not
T const *p -- same as above
T * const p -- *p is writable, p is not
const T * const p -- neither p nor *p are writable
T const * const p -- same as above
修改强>
请注意,对data
的任何更改都不会反映在调用函数中(与对*data
的任何更改都不同),那么为什么还要费心const
?通常,这是因为函数体需要在整个执行过程中保留该指针; IOW,如果你不小心更新了data
,你就会在函数中破坏某些东西。这只是一种保证不会发生这种变化的方法。