dsdf

关于一些原理

1 左值与右值

int a = b;
float a = 3.14f;
这两个是最简单的赋值语句,那么其中的含义是什么?
    左值:左值是一个地址。
    右值:右值是一个值(内容)。
 如何理解?
  	左值是内存中的一个地址,当我们 int a;定义一个变量a时,编译器给a随机分配一个地址和一段连续的内存空间,同时因为我们定义的变量为int型,他占4Byte的内存,那么会在a的这个地址后取连续的4Byte大小的空间形成一个"容器",这个"容器"的内存空间用来存储 int 型的数据,其他数据类型可以以此类推。
    右值是"容器"中的内容,也就是把这个地址按他的类型取地址空间中的内容。
    这样一来,赋值语句就是各自按地址和类型取相应内存空间,左值为容器,右值为容器内的值,把值装入左值的容器中。
	为什么int *p = 4000;不行?(在语法上他是可以通过编译的)
        1.4000是一个非法的地址,他可能原本存有数据,或者已经被占用等情况。
        2.他是一个值,我们不存在把值当做地址的情况。
   	所以说我们会有malloc,new函数来申请一块合法的空间。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值