我试图将字符存储在变量中的地址中,但是我有一个编译错误(一元'*'(有'int')的无效类型参数)。
int address = 4000;
char character = (char) *address
为什么这段代码不取消引用将字符存储在内存位置4000的指针,如何修复它?感谢。
答案 0 :(得分:5)
从语法上讲,您正在寻找
char character = *(char*)address;
这是否会做任何有用的事情是另一回事......
需要思考的一些问题:
int
可能或可能不足以代表每个有效地址(在我的系统上,它不是)。答案 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”