c++ Prime读书笔记2(变量和文字常量的声明和定义)

变量和文字常量都有存储区并且有相关的类型区别在于变量是可寻址的
addressable 对于每一个变量都有两个值与其相关联
1.它的数据值存储在某个内存地址中有时这个值也被称为对象的右值rvalue 读做are-value 我们也可认为右值的意思是被读取的值read value 文字常量和变量都可被用作右值
2.它的地址值——即存储数据值的那块内存的地址它有时被称为变量的左值lvalue
读作ell-value 我们也可认为左值的意思是位置值location value 文字常量不能被用作左值

  
  
   
    
  
  
许多“左值和右值得用法会影响程序的语义行为和性能”的情况,尤其在“向函数传递值”或者“从函数返回值”的时候。

  
  
   
    
  
  
变量的定义会引起相关内存的分配。
声明和定义
声明是一种构造,它引入或者重新引入一个名称到某个作用域zhogn。而且,这种引入通常都包含对所引入名称的一个局部分类,但是,有效的声明并不要求包含被引入对象的细节。
定义,对于“类类型或者函数“的定义,这意味着必须提供一对花括号内部的实体,对于变量而言,进行初始化和不具有extern关键字的声明都是定义。
Int w;  //前面没有extern的全局变量的声明,同时也是定义
Extern int v;// 变量v的声明
Extern int v = 1; //一个初始化器使之成为定义

  
  
   
    
  
  

  
  
   
    
  
  
对象声明declaration 的作用是使程序知道该对象的类型和名字它由关键字extern以及跟在后面的对象类型以及对象的名字构成。C++数据类型不是定义不会引起内存分配实际上它只是说明了在程序之外的某处有这个变量的定义虽然一个程序只能包含一个对象的一个定义但它可以包含任意数目的对象声明比较好的做法不是在每个使用对象的文件中都提供一个单独的声明而是在一个头文件中声明这个对象然后再在需要声明该对象的时候包含这个头文件按照这种做法如果需要修改对象的声明则只需要修改一次就能维持多个使用该对象的文件中声明的一致性

  
  
   
    
  
  
如果一个变量是在全局域中定义的,那么系统会保证为它提供初始值0
但是如果变量在局部域内定义的,或者是通过new表达式动态分配的,则系统不会向它提供初始值0。这些对象被称为是未初始化的,未初始化的对象不是没有值,而是它的值是未定义的(Undefined)。 与它相关联的内存区中存在一个随机的位串,可能是以前使用的结果。

  
  
   
    
  
  
在对象的定义中,当对象的标识符在定义中出现后,对象名马上就是可见的。因此用对象的初始化它自己是合法的,只是这样做不是太明智的。Eg: int bizarre = bizarre;
初始化:
Int month = 0;
Int month(0);
Int month = int();//每种内置数据类型都支持这种特殊的构造函数语法,可将对象初始化为0
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值