gpt4 book ai didi

c++ - 当 const 指针用作函数的参数时

转载 作者:行者123 更新时间:2023-11-28 04:11:21 28 4
gpt4 key购买 nike

完整代码在链接下方。 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 *constconst BYTE *const

我无法推测为什么这个函数的作者选择了 BYTE const* 版本而不是更流行的 const BYTE*

关于c++ - 当 const 指针用作函数的参数时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57719443/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com