从C中读取内存中的地址

时间:2013-01-30 21:31:29

标签: c linux

我试图将字符存储在变量中的地址中,但是我有一个编译错误(一元'*'(有'int')的无效类型参数)。

int address = 4000;
char character = (char) *address

为什么这段代码不取消引用将字符存储在内存位置4000的指针,如何修复它?感谢。

5 个答案:

答案 0 :(得分:5)

从语法上讲,您正在寻找

char character = *(char*)address;

这是否会做任何有用的事情是另一回事......

需要思考的一些问题:

  1. int可能或可能不足以代表每个有效地址(在我的系统上,它不是)。
  2. 您如何知道流程内存映射中地址4000处的内容?

答案 1 :(得分:2)

您无法尝试解决随机内存地址并期望它能够正常工作。您的程序可能会访问一个非映射的内存地址,并且稍后会崩溃或导致许多问题,但要做你想做的事情。

char *address = (char *)4000;
char c = *address;

答案 2 :(得分:0)

这样做:

#include <stdint.h>
/* ... */
uintptr_t ip = 4000;                 // this is an integer
char character = * (char *)(ip);

答案 3 :(得分:0)

#include <stdint.h>
intptr_t address = 4000;
char character = *((char*)address);

答案 4 :(得分:0)

char *address=(char*)4000;
char character = *address;

你的责任是什么“4000”