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
//原文链接:http://www.cppblog.com/wuzimian/archive/2012/05/23/175899.aspx?opt=admin

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值