c语言中如何给指针赋32位地址

来源:百度知道 编辑:UC知道 时间:2024/06/07 17:08:28
我想给指针赋值0xf0000,如下
char *p=NULL;
p=(long *)0xf0000;

但tc3.0编译器提示错误,我见过给int型的
int *P;
P=(int *)0xf000;
难道是因为编译器的原因p的值只能为16位么,为什么不能赋给32位?
但是我的工作需要在dos下搜索f0000---fffff这段内存,在这段内存里面找一个字符串。。。。

我的目的就是直接搜这段内存,我要找smbios,。。。。。。。。。。

char *p = NULL;
p = (char *) ((long *)0xf0000);

这样可以吗?

int *P;
P=(int *)0xf000;
你定义的p就是指向int型数据的,所以编译器不提示错误信息
char *p=NULL;
p=(long *)0xf0000;
此时你定义的p是指向char型的,而你又让他指向long型的
编译器显示:error C2440: '=' : cannot convert from 'long *' to 'char *'
也就是认为你赋值错误

有什么必要对指针这样直接进行物理地址的赋值吗?
如果这个物理地址直接指向关键内存区,可能导致系统的崩溃
建议不要这样使用

用void *p;就行了.这是万用的.
p=(long *)0xf0000;

不能直接为指针赋常量值,应该对其它的变量取地址.