qq_43412960 2020-01-03 10:42 采纳率: 78.6%
浏览 183
已采纳

这是一个C语言地址赋值的相关问题

int main()
{
    int b=1;
     int *c=&b;
    //int *a=0x12345678;


getch();


return 0;
}


这是很简单的两条定义语句,我调试
看到了地址为0x形式

图片说明

于是,我想,自己定义个指针,然后按照调试的地址格式,我手动赋值个地址

图片说明

失败了,说是类型不匹配,我很纳闷 ,格式明明和调试的那个地址相同啊,为什么不行呢?

  • 写回答

2条回答 默认 最新

  • huhuren12 2020-01-03 11:03
    关注
    改成 int *a = (volatile int*)0x12345678;
    ``` 你想把内存地址直接作为指针来使用就需要告诉编译器你的这个地址是内存地址,而不是常量,否则编译器会认为你将一个常量
    赋值给指针变量,这是不允许的,加上 (volatile int*)就是强制转换成指针类型,告诉编译器这个常量是内存地址的指针
    还要注意的就是,你应该想让a的指针指向b吧,你每次重新运行后有可能系统每次分配的b的地址都不一样
    
    请采纳!你不管采纳不采纳,你只要悬赏的分贴出来了,你的积分就已经被扣掉了的,为什么不愿意采纳别人答案呢!
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#网络安全#的问题:求ensp的网络安全,不要步骤要完成版文件
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥20 使用Photon PUN2解决游戏得分同步的问题
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM