完整代码在链接下方。 base64 decode snippet in c++ 我对上面链接代码中的 const 指针有疑问。
主要
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,指针可以改变,buffer的值不能改变。
当使用 BYTE const* buf 时,const 是指针变量,所以值可以改变,但地址不能改变。
在上面的代码中, buf指针是const,但是buf++是可能的?
为什么使用 BYTE const* buf 而不是 const BYTE* buf?
谢谢
最佳答案
令人困惑的是,const BYTE*
和 BYTE const*
are equivalent to each other .两者都是指向常量的指针。
要使指针本身为常量,公式为 BYTE *const
。指向 const 的 const 指针将是 BYTE const *const
或 const BYTE *const
。
我无法推测为什么这个函数的作者选择了 BYTE const*
版本而不是更流行的 const BYTE*
。
关于c++ - 当 const 指针用作函数的参数时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57719443/