我需要帮助如何处理这种情况。
包含内存起始值的变量 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/