gpt4 book ai didi

c++ - (char*)&obj 替代品

转载 作者:搜寻专家 更新时间:2023-10-31 00:51:16 25 4
gpt4 key购买 nike

我看到它常用于文件处理,(char*)&obj。自 C++11 以来,有这么多可用的转换方法,比如静态转换,我们不能在这些方法上使用一种吗?

最佳答案

& 符号用于获取 obj 的地址。

例子:

#include <cstdio>

void printData(const char* p, int n) {
for(int i = 0; i < n; i++)
printf("byte %2d : %d\n", i, (int)p[i]);
}

struct DataStruct {
int x;
int y;
};

int main() {
DataStruct obj;
obj.x = 5;
obj.y = 257;
char* dataPtr = (char*)&obj;
printData(dataPtr, sizeof(DataStruct));
return 0;
}

其中 (char*)&obj 策略用于获取可以传递给 printData 函数的 char*,该函数只需要打印一个字符数组。

在那个例子中,行

char* dataPtr = (char*)&obj;

可以像这样使用 reinterpret_cast 编写:

char* dataPtr = reinterpret_cast<char*>(&obj);

这会做同样的事情。使用 reinterpret_cast 而不是神秘的 (char*)&obj 的一个优点是,当您编写 reinterpret_cast 时,您会更清楚地看到您在代码中的那个点做了一些奇怪且可能危险的事情。

关于c++ - (char*)&obj 替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55679079/

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