zoukankan      html  css  js  c++  java
  • 指针的强制转换

    今天遇到人问这方面问题,之前不知看哪个高人的博客:强制转换,归根结底就是内存布局的改变。确实如此,很多人认为很难去理解。实际上,对于我们弄底层的人来说,这应该很容易才对:内存中的数据存放的形式到底还是0101等二进制数字,但各种类型对应的字节数不一样,对于int一次取4个字节,而对于char一次则取1个字节,对于机器来说数还是那个数,只是你取多少的问题。对于其他的一些规则,网上太多了。

    比如一个简单的(取自网上问题):

    unsigned char bnum;
    unsigned short dd=5392;
    bnum=(char)(dd);
    结果值是16,这是为什么?
    转换前的dd:
    转换后的dd:
    需要注意的是变量dd当初定义的类型是没有改变的。
    对于嵌入式开发人员来说,这是很好理解的;当然是有那么一些隐晦的,我个人觉得慢慢啃下就能发现个中道理。
    指针的强制转换,注意是指针指向的内容有了变化而已,内容的变化和上述是一样的道理,指针本身是没变的(某些特殊情况不提)。
    但是强制转换后,读取出来可能和想象的不一样哦,注意注意,注意转换后数据的读取方式:
    VS2005下:
  • 相关阅读:
    Ubuntu Dash 添加 Sublime Text 图标
    Ubuntu14.04修改DNS服务
    VNC viewer访问Ubuntu 14.04
    GPT和parted命令详解
    linux 标准IO缓冲机制探究
    浅谈无缓存I/O操作和标准I/O文件操作区别
    jsp利用request获取当前的链接地址
    eclipse jsp formatter
    spring bean
    ubuntu google-chrome-stable
  • 原文地址:https://www.cnblogs.com/EmbeddedBoy/p/2008817.html
Copyright © 2011-2022 走看看