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

标签 c++ pointers arguments constants

完整代码在链接下方。 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/

相关文章:

c++ - 内存不足的概念

c++ - 将循环转换为数学方程

c - 为什么在正常调用 free() 时会出现总线错误或段错误?

c++ - 参数检查

Python:多个参数如何工作?

rest - typescript 没有正确推断剩余参数

c++ - 类返回类型重载

c++ 小写大写字母没有区别

c++ - char**& 参数混淆

c - 在 C 中为具有字符指针的结构分配内存