当常量指针用作函数的参数时
when const pointer is used as parameter of function
整个代码在链接下方。 C++ 中的 base64 解码片段 我对上述链接代码中的常量指针有疑问。
主要
std::vector<BYTE> myData;
...
std::string encodedData = base64_encode(&myData[0], myData.size());
base64_encode
std::string base64_encode(BYTE const* buf, unsigned int bufLen) {
std::string ret;
int i = 0;
int j = 0;
BYTE char_array_3[3];
BYTE char_array_4[4];
while (bufLen--) {
char_array_3[i++] = *(buf++);
if (i == 3) {
参数是 BYTE const* buf,而不是 const BYTE* buf。
当 const BYTE* buf 用作参数时, const 用于 BYTE,因此指针可以更改,但缓冲区的值不能更改。
当使用 BYTE const* buf 时,const 用于指针变量,因此可以更改值,但不能更改地址。
在上面的代码中, buf 指针是常量,但 buf++ 可能吗?
为什么使用 BYTE const* buf而不是 const BYTE* buf?
谢谢
令人困惑的是,const BYTE*
和BYTE const*
是等价的。 两者都是指向常量的指针。
为了使指针本身恒定,公式是BYTE *const
。 常量指针指向常量将是BYTE const *const
或const BYTE *const
。
我无法推测为什么此功能的作者选择了BYTE const*
版本而不是更流行的const BYTE*
。
相关文章:
- 将可变参数函数的参数封装在类实例中
- QML 使用带有参数C++函数
- 使用可变参数函数作为模板参数
- 如何在C++中伪造虚拟可变参数函数模板?
- 为什么可变参数函数不适用于模板
- C++ std::functional 中的可变参数函数模板
- 可变参数函数指针的定义对于VxWorks spyLib来说不清楚
- 使用可变参数函数覆盖具有不同函数签名的虚函数
- 考虑引用和常量的可变参数函数包装器
- 使用可变参数函数将整数和/或整数数组放入单个 int 数组中
- 在可变参数函数中转发特定范围的参数
- 通过引用传递参数;函数返回类型是否必须为 VOID?
- 使用带有一个参数函数的递归找到数字的平方
- 可变参数函数模板不能很好地使用 std::function 作为参数
- 多个可变参数函数的单个模板参数包?
- 参数数据类型未知的可变参数函数
- 可变参数函数参数包扩展
- 使用模板可变参数函数将多个参数传递给另一个函数
- 对可变参数函数的递归调用的链接器错误
- 通过像printf这样的可变参数函数传递一个带有常量字符*转换函数的类