读书人

指针使用的疑问,该如何处理

发布时间: 2012-03-30 17:32:09 作者: rapoo

指针使用的疑问
int *ptr;
ptr=(int *)0x8000;
*ptr=0xaabb;
为什么说这样用非常危险?第三条语句是不是这么理解:给0x8000所指的内存块赋值0xaabb?

[解决办法]
>第三条语句是不是这么理解:给0x8000所指的内存块赋值0xaabb?
是这个意思。不过实际运行可能会产生异常,因为0x8000所在的地址内容是不能读写的


[解决办法]
除非所有的资源都是自己分配使用
尽量避免直接操纵底层(内存、IO等),它们有系统软件管理
[解决办法]

探讨
>第三条语句是不是这么理解:给0x8000所指的内存块赋值0xaabb?
是这个意思。不过实际运行可能会产生异常,因为0x8000所在的地址内容是不能读写的

[解决办法]
对16位单片机而言,sizeof(int)==2
意思就是
当小端内存时,往0x8000地址处写入0xbb,往0x8001地址处写入0xaa;
当大端内存时,往0x8000地址处写入0xaa,往0x8001地址处写入0xbb

[解决办法]
+搞不好就挂了~~
探讨

除非所有的资源都是自己分配使用
尽量避免直接操纵底层(内存、IO等),它们有系统软件管理

[解决办法]
两个地址在不是你自己了解的情况下切记不可使用它们,因为他们是未知的,也正因为这个所以非常危险,可能没问题,也可能电脑崩溃!
最后一句的理解楼主是对的!

读书人网 >C语言

热点推荐