如何在不触发警告的情况下将整数值转换为指针地址

普罗加

我有以下变量

uint32_t Value = 0x80

0x80代表存储器中的地址,例如

// Write 2 at address 0x80
*(uint32_t*)((uint32_t)0x80) = 2;

如何将Value转换为Pointer,使其指向0x80?

uint32_t *Pointer = ?? Value;

这个:

(uint32_t*)(uint32_t)Value;

返回:

warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
chux-恢复莫妮卡

要处理整数到对象指针的转换,请使用可选的整数uintptr_tintptr_t类型。函数指针是另一回事。

以下类型指定了一个无符号整数类型,其属性是void可以将任何有效指针都转换为该类型,然后再转换回给的指针void,其结果将等于原始指针C11dr 7.20.1.4 1

uintptr_t

然后将转换void *为所需的类型。

#include <stdint.h>
uintptr_t Value = 0x80;
uint32_t *Pointer = (void *) Value;

如果0x80不是来自有效的uint32_t *,则导致未定义的行为(UB)。然而,听起来OP处于具有内存映射数据位置的平台上。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不获取NaN值的情况下将字符串列转换为数值

如何在不丢失信息的情况下将因子转换为整数\数字?

如何在不违反C ++核心准则的情况下将整数转换为void *?

如何在不增加数据大小的情况下将熊猫中的分类变量转换为数值?

如何在没有警告的情况下将套接字转换为SSLConnectionRef?

如何在没有警告/错误的情况下将数组转换为ArrayList?

ncdump - 如何在不包含 nodata 值的情况下将 .nc 转换为文本?

如何在不创建对象的情况下将Java类转换为json格式结构

如何在不循环的情况下将python JSON行转换为dataframe列

如何在不编写中间HTML文件的情况下将Markdown转换为PDF?

如何在不丢失数据的情况下将MBR分区转换为GPT?

如何在不转换为datetime的情况下将“ Ticks”截断毫秒数?

如何在不嵌套特定标签的情况下将EditText转换为html

如何在不丢失列的情况下将列(类别类型)转换为列?

如何在不丢失前导零的情况下将String转换为Long

如何在不丢失Java格式的情况下将HTML内容转换为PDF?

如何在不损失结果范围的情况下将C中的uint转换为int

如何在不四舍五入的情况下将CAST转换为小数

如何在不激怒mypy的情况下将列表转换为元组?

如何在不运行Task的情况下将Action转换为Func <Task>?

如何在不添加额外数字的情况下将float转换为double?

如何在不损失透明度的情况下将图像转换为灰度?

Perl:如何在不创建副本的情况下将数组引用转换为数组

如何在不丢失列表结构的情况下将列表项转换为 unicode

如何在不丢失数据的情况下将MBR HDD转换为GPT?

如何在不循环的情况下将python JSON列表转换为数据框列

如何在不弄乱序列的情况下将列表转换为字典

如何在不获取NA的情况下将R中的因子转换为日期?

如何在不破坏 SQL 逻辑的情况下将 JOINS 转换为子查询