c - 如何使用指针处理存储在变量中的地址?

标签 c pointers

我需要帮助如何处理这种情况。 包含内存起始值的变量 DestinationAddress。我想使用指针将数据写入地址。可以吗?

例子:

long Data32;
long DestinationAddress;
long *temp;

Data32 = 0x00112233;
DestinationAddress = 0x00280000;
temp = DestinationAddress;
*temp = Data32;

最佳答案

当您的变量声明为:

long Data32;
long DestinationAddress;
long *temp;

你不可以使用

temp = DestinationAddress;

您可以使用:

temp = &DestinationAddress;

然后,使用:

*temp = Data32;

是将 DestinationAddress 的值设置为 Data32 的有效方法。

但是,名称 DestinationAddress 和用于声明它的类型 long 似乎不匹配。如果你想让DestinationAddress存储一个long的地址,需要声明为:

long* DestinationAddress;

如果您想使用整数类型而不是long* 来存储地址,则要使用的类型是intptr_t or uintptr_t。 .

uintptr_t Data32;
uintptr_t DestinationAddress;
uintptr_t* temp;

Data32 = 0x00112233;
DestinationAddress = 0x00280000;
temp = &DestinationAddress;
*temp = Data32;

更新,回应 OP 的评论

你需要使用:

long Data32;
uintptr_t DestinationAddress;
long* temp;

Data32 = 0x00112233;
DestinationAddress = 0x00280000;
temp = (long*)DestinationAddress;
*temp = Data32;

关于c - 如何使用指针处理存储在变量中的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42094991/

相关文章:

c++ - QT中指针 vector 的访问 vector

c - 在 C 中实现多个管道时遇到问题

IRC 客户端的 C 库

c - 带有数组的结构的CUDA数组(AoSoA)

c - 如何读取以 ',."/( )""\n 分隔的字符串

我可以访问内存中的任何内容吗?

c++ - 编译时断言数据类型大小

整数指针到整数的转换

c - 为什么指针只递增一次

C - 带参数的计算器