C 如果我在一个特定块的内存中有一个整数版本的地址,我怎么做一个指向这个地址的指针?

C 如果我在一个特定块的内存中有一个整数版本的地址,我怎么做一个指向这个地址的指针?,c,C,我有一个前面的函数,它返回特定内存块的地址(int类型)。我现在想把这个块的特定字节数memcpy到另一个指针。我如何访问这个内存(假设我有其地址的int版本),以便正确调用memcpy?我试着将其转换为void*,但没有成功。“将其转换为void*”是正确的方法 如果您有一个具有此签名的函数: int getmemaddr(); 它返回一个内存地址,您需要执行以下操作: char mybuf[mybuflen]; memcpy(mybuf, (void*)getmemaddr(), mybu

我有一个前面的函数,它返回特定内存块的地址(int类型)。我现在想把这个块的特定字节数memcpy到另一个指针。我如何访问这个内存(假设我有其地址的int版本),以便正确调用memcpy?我试着将其转换为void*,但没有成功。

“将其转换为
void*
”是正确的方法

如果您有一个具有此签名的函数:

int getmemaddr();
它返回一个内存地址,您需要执行以下操作:

char mybuf[mybuflen];
memcpy(mybuf, (void*)getmemaddr(), mybuflen);
。。。等等


请注意,
int
是32位的,因此在64位系统中,它不能表示任意内存地址。

您应该使用
stdint.h中的
intptr\t
而不是
int
——在大多数64位平台上,指针在转换过程中会丢失位,很可能会失效。@ChrisLutz Bah 64位。4194304K内存应该足够任何人使用。
int
至少是16位,可以是实现所需的任意位数。然而,在大多数常见的64位体系结构上,以及几乎所有32位体系结构上,它都是32位的,当将代码从32位移植到64位时,可能会导致代码中断。