c++ - 用指针修改字节

标签 c++ c pointers

long double i, *ptr;
ptr = &i;

我要修改4号字节的值,long double的大小是8字节。那么是否可以从 *ptr 中减去 4 呢? 即

(ptr)-4 = 9;

最佳答案

您可以通过将指向对象的指针转换为指向unsigned char 的指针然后通过该指针访问字节来访问表示对象的字节。例如,i 的第四个字节可以通过以下方式设置为 9:

unsigned char *p = (unsigned char *) &i;
*(p+4) = 9;

但是,您不应在没有充分理由的情况下这样做。它会遇到可移植性问题,只应为特殊目的使用,并仔细注意 C 标准和/或 C 实现的文档。如果你进一步解释为什么你想做这样的事情,可能会展示更好的方法或解释危险。

请注意,字节 4(从字节 0 开始编号)的正确地址是 p+4,而不是问题中使用的 p-4

关于c++ - 用指针修改字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16221349/

相关文章:

c++ - 运行 OpenCV 3.1 迷你应用程序时出现蓝屏

C++ 模板术语

c++ - 如何(优雅地)将任意数量的输入输出参数旋转到函数?

php - 我可以强制我的 PHP C 扩展在编译时链接 pthread 吗?

c - 从整数创建指针,无需在 C 函数调用中进行强制转换

c++ - 将字节数组转换为标准数据类型

c - 访问结构体中的指针

前面为 0 的 C++ int 会更改整个值

c++ - 用带有 int 标识符的类替换枚举 - 不编译

c - 以原子方式打开和锁定文件