我试图将字符存储在变量中的地址处,但出现编译错误(一元'*'的无效类型参数(具有'int'))。
int address = 4000;
char character = (char) *address
为什么此代码不取消引用将字符存储在内存位置 4000 的指针,我该如何解决?谢谢。
从语法上讲,您正在寻找
char character = *(char*)address;
这是否会做任何有用的事情是另一回事......
需要思考的一些问题:
int
可能或可能不够宽以表示每个有效地址(在我的系统上,它不是)。您不能只尝试寻址随机内存地址并期望它起作用。您的程序可能会访问未映射的内存地址,并且稍后会崩溃或导致自己出现许多问题,但要执行您想要的操作。
char *address = (char *)4000;
char c = *address;
做这个:
#include <stdint.h>
/* ... */
uintptr_t ip = 4000; // this is an integer
char character = * (char *)(ip);
#include <stdint.h>
intptr_t address = 4000;
char character = *((char*)address);
char *address=(char*)4000;
char character = *address;
你的责任是什么在“4000”