如何传递数组作为对const char指针的引用?

问题描述

这是我的代码

#include <iostream>
#include <stdint.h>
using namespace std;

//converts high endian to little endian
uint32_t format(const char* &bytes)
{
    return (uint32_t)((bytes[0] << 24) |
        (bytes[1] << 16) |
        (bytes[2] << 8) |
        (bytes[3]));
}

uint32_t normal(const char* &bytes)
{
    return (uint32_t)((bytes[3] << 24) |
        (bytes[2] << 16) |
        (bytes[1] << 8) |
        (bytes[0]));
}

int main()
{
    char bytes[4];
    bytes[0]= 0x01;
    bytes[1]= 0x23;
    bytes[2]= 0x45;
    bytes[3]= 0x67;
    printf("0x%08x\n",normal(bytes);
    printf("0x%08x\n",format(bytes);
}

我有一个大小为4的char数组,称为字节。字节中的每个元素都存储一个字节,我将其统称为32位无符号int。我的目标是将字节传递到format()中,这将返回数字的小字节序形式(以字节为单位)(当前存储在高字节序中)。 我的问题是,我想将数组作为引用传递,这样它就不会为函数参数创建额外的内存。不仅如此,我还想使它不能以字节为单位更改元素。为此,我尝试: uint32_t格式(const char *&bytes);并传递了这样的字节:format(bytes),但这给了我一个错误

当我这样写时:uint32_t format(char * const&bytes),错误停止了,但这不是我想要的,因为这是对字符常量指针的引用,这意味着我无法更改指针本身,但我可以更改其指向的值。 我想要的是相反的:我想要一个指向常量字符的指针的引用,以便可以更改指针,但不能更改其指向的值。

最后,我想补充一点,我可以在没有引用的情况下轻松完成此操作,但是,正如我之前提到的,这将导致每次调用函数参数时都分配内存,这不是我想要的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)