int main()
{
int b=1;
int *c=&b;
//int *a=0x12345678;
getch();
return 0;
}
这是很简单的两条定义语句,我调试
看到了地址为0x形式
于是,我想,自己定义个指针,然后按照调试的地址格式,我手动赋值个地址
失败了,说是类型不匹配,我很纳闷 ,格式明明和调试的那个地址相同啊,为什么不行呢?
int main()
{
int b=1;
int *c=&b;
//int *a=0x12345678;
getch();
return 0;
}
这是很简单的两条定义语句,我调试
看到了地址为0x形式
于是,我想,自己定义个指针,然后按照调试的地址格式,我手动赋值个地址
失败了,说是类型不匹配,我很纳闷 ,格式明明和调试的那个地址相同啊,为什么不行呢?
改成 int *a = (volatile int*)0x12345678;
``` 你想把内存地址直接作为指针来使用就需要告诉编译器你的这个地址是内存地址,而不是常量,否则编译器会认为你将一个常量
赋值给指针变量,这是不允许的,加上 (volatile int*)就是强制转换成指针类型,告诉编译器这个常量是内存地址的指针
还要注意的就是,你应该想让a的指针指向b吧,你每次重新运行后有可能系统每次分配的b的地址都不一样
请采纳!你不管采纳不采纳,你只要悬赏的分贴出来了,你的积分就已经被扣掉了的,为什么不愿意采纳别人答案呢!