zoukankan      html  css  js  c++  java
  • c++中变量、变量名、变量地址、指针、引用等含义

     

    首先了解内存,内存就是一排房间,编号从0开始,0,1,2,3,4,5......

    房间里面一定要住人,新人住进去了,原来的人就走了;不管你住不住,里面都有人、

    编号就是地址、里面的人就是内容,为了我们(人)记着方便,我们给他们起些名字,如张三、李四、于是,

    变量,就是一个房间,它有编号(地址),他有名字(变量名),他有内容(里面的人)、

    int a = 3;   // a 是名字,3 是内容,地址可以假设是0x 12345678 (通常就是32位地址)、

             // 0x12345678 这个房间里面住的是一个int,

     

    所谓指针变量,就是一个房间,他里面的内容,可以放个地址;如

    int *pi = &a;   // pi 是名字,内容就是a的地址,0x12345678; 所以,你懂的,

                // 我们知道你家地址,你说,我能找到你吗??于是

    *pi = 4;          // 就是通过pi,也就是a 的地址,把a的内容改成4了、

    pi 的类型int*, pi就是个指针(变量)、

    好吧,变量的别名,就相当于外号,

    int & b = a;    // 同样的0x12345678 这个房间,刚才他有个名字a,现在又有个名字b了、

    b = 10;          // 也就是 a = 10;

    a = 100;        // 也就是 b = 100;

    int& 就是引用类型,int&  b = a; 

    意思,就是b是对a 引用,也就是b 是a 的别名、a就是b,b就是a 其实,变量名字神马的都是浮云。 假设有一个整型变量(也就是int型),它放在内存0x0023F920中(其实是从0x0023F920~0x0023F923四个字节), 这个变量我声明的时候是这样的:int a=3;  那么我们可以知道:这个整型变量的地址是:0x0023F920,它的名字是a, 它的值是3,‘a’就是一个代号,一个名字,方便程序员书写程序,当编译器看到a时,看到a=10时,编译器就会把0x0023F920开始 的四个内存单元中的值改为10,仅此而已。所以无论是整型变量也好,指针变量也好,我们要把“变量名”和“变量”这两个概念区分开, 就像把“人的姓名”和“人本身”区分开一样。 此外,关于指针的类型,我们知道有int *,char *,double *等等。如果对一个int * 型的指针解引用,那么会连续读四个字节,如果 对一个char *型的指针解引用,则只会读一个字节,同样道理,double * 读八个字节,这是怎么实现的呢?其实反映在汇编代码上很简单。 比如有 int * a;b=*a;  对应汇编代码:  move acx, dword ptr [a]       move dword ptr[b],acx

  • 相关阅读:
    Linux之定时器与时间管理 【转】
    LDAP研究
    Mac中使用svn进行项目管理
    英国调查报告称中国梦吸引力首超美国梦
    怎样删除在Github中创建的项目
    MySQL分组数据
    Eclipse ADT 插件安装慢的解决的方法
    iOS插件化研究之中的一个——JavaScriptCore
    二维码的妙用:通过Zxing实现wifi账号password分享功能
    CF(435D
  • 原文地址:https://www.cnblogs.com/xuhj001/p/3436143.html
Copyright © 2011-2022 走看看