gpt4 book ai didi

c++ - unsigned char * 加上int?这是做什么的?

转载 作者:太空狗 更新时间:2023-10-29 20:33:27 25 4
gpt4 key购买 nike

我一直致力于将一些代码从 C++(一种我可以很好地阅读的语言)转换为 Python(一种我可以很好地编写的语言),但遇到了一些让我非常困惑的行:

unsigned char byte = *(bytes+currentByte);
float * pF = (float*)(bytes+currentByte);
std::string str((char*)(bytes+currentByte), numBytes);

现在,这些行一开始看起来很正常,直到我意识到这些变量是如何定义的:

// From the .h file
unsigned char* bytes;
int currentByte;

所以因为我不明白到底会发生什么,所以我不能指望转换代码。

任何人都可以向我解释添加一个 unsigned char * 和一个 int 会做什么吗?谢谢。

最佳答案

*(bytes+currentByte)bytes[currentByte]的另一种写法。这只是地址运算,当数组符号更易于读写时,它也有点可笑。

(float*)(bytes+currentByte) 表达式将 bytes[currentByte] 的地址转换为浮点指针或 (float*) &bytes [当前字节]

地址运算允许您将 bytes[currentByte] 转换为 currentByte[bytes] 因为 *(bytes+currentByte) 等同于 *(currentByte+bytes).它是一种“语法糖”,可以让写作风格更清晰、更简洁。这些都是等价的,而且是一个非常愚蠢的程序员把戏。

关于c++ - unsigned char * 加上int?这是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55130983/

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