我遇到了下面给出的一行
char *ch=(char*)3000
我想知道这条线的含义.....
答案 0 :(得分:9)
看起来像指针ch被分配了一个绝对的内存地址3000.一般来说这是一个非常糟糕的主意,除非你在没有分页的嵌入式系统上工作,你知道完全什么是在内存位置3000。
答案 1 :(得分:1)
也许看到其余的代码是相关的......
该指针可能与其所在的段相关(在Intel处理器上)。在这种情况下,3000
可能只是该段中的一个索引,在程序的前面定义,我们没有这些行。
这取决于系统架构,环境,操作系统,编译器,代码的其余部分(以及程序员......)。
答案 2 :(得分:0)
不是很明显吗?
数值“3000”被强制转换为char指针,即ch
被初始化为内存地址3000(十进制)。
答案 3 :(得分:0)
AFAIK,3000没有特殊的地址/值,在大多数情况下访问它会导致分段错误或垃圾值。
如果你在代码中看到它,可能是它被错误地使用而不是(void *),比如在你有键值对的地图的情况下,结果可能会在这种情况下被转换为整数。