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下:
  • 相关阅读:
    poj 2676 Suduku (dfs)
    poj 1562 Oil Deposits (dfs)
    poj 2907 Collecting Beepers (dfs)
    poj 1655 Balancing Act (树形dfs)
    poj 3411 Paid Roads (dfs)
    hdu 2896 病毒侵袭 (AC)
    hdu 3065 病毒侵袭持续中 (AC)
    poj 2251 Dungeon Master (bfs)
    java中debug使用
    Swing入门级小项目总结
  • 原文地址:https://www.cnblogs.com/EmbeddedBoy/p/2008817.html
Copyright © 2011-2022 走看看