2

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

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

为什么此代码不取消引用将字符存储在内存位置 4000 的指针,我该如何解决?谢谢。

4

5 回答 5

5

从语法上讲,您正在寻找

char character = *(char*)address;

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

需要思考的一些问题:

  1. int可能或可能不够宽以表示每个有效地址(在我的系统上,它不是)。
  2. 您如何知道进程内存映射中地址 4000 处的内容?
于 2013-01-30T21:33:25.257 回答
2

您不能只尝试寻址随机内存地址并期望它起作用。您的程序可能会访问未映射的内存地址,并且稍后会崩溃或导致自己出现许多问题,但要执行您想要的操作。

char *address = (char *)4000;
char c = *address;
于 2013-01-30T21:33:54.300 回答
0

做这个:

#include <stdint.h>
/* ... */
uintptr_t ip = 4000;                 // this is an integer
char character = * (char *)(ip);
于 2013-01-30T21:33:48.077 回答
0
#include <stdint.h>
intptr_t address = 4000;
char character = *((char*)address);
于 2013-01-30T21:35:46.390 回答
0
char *address=(char*)4000;
char character = *address;

你的责任是什么在“4000”

于 2013-01-30T21:38:11.237 回答