C++ Primer 学习笔记(一)——变量和基本类型

一、基本内置类型与类类型

C++中数据类型分为:基本内置类型与类类型。基本内置类型指:布尔型,字符型,整型,浮点型等。

二、字面值常量

1、只有内置类型存在字面值,没有类类型的字面值。

2、定义长整型时,应使用大写字母L,小写字母l易与数值1混淆。

3、字符字面值通常用一对单引号来定义。

4、C++中所有的字符串字面值都由编译器自动在末尾添加一个空字符。字符串字面值由一对双引号定义。

5、处理长字符串有个更基本的方法:在一行的末尾加一反斜线符号可将此行和下一行当作同一行处理。

三、变量

明确一下左值与右值的概念:

左值:可以出现在赋值语句的左边或右边

右值:只能出现在赋值的右边,不能出现在赋值语句的左边。

例,变量是左值,数字字面值是右值。

1、变量初始化

(1)C++支持两种变量初始化的方式:复制初始化和直接初始化。

int ival(1024);    // direct-initialization
int ival = 1024;  // copy-initialization

“初始化不是赋值”。初始化是指创建变量并给它赋初值,而赋值是擦除对象的当前值并用新值代替。

对于内置类型的对象,复制初始化和直接初始化几乎没有差别;对于类类型的对象,

有些初始化仅能用直接初始化完成。

(2)对于内置类型的变量,在函数体外定义的变量都初始化为0,在函数体内定义的变量,不进行自动初始化。

对于类类型的对象,其初始化是通过构造函数实现的。

(3)定义与声明

定义:用于为变量分配存储空间,还可以(不是必须)为变量指定初始值。在一个程序中(可能多个文件),

变量有且仅有一个定义。

声明:用于向程序表明变量的类型和名字。

有种观点认为,定义也是声明。因为当定义变量时,我们声明了它的类型和名字。个人认为,将声明和定义

完全区分开来,比较容易理解。

extern int i;   //declares
int i;          //defines

extern double pi = 3.1416; //definition

extern double pi; //ok: declaration not definition

double pi;                  //error: redefinition of pi

注意:变量必须且仅能定义一次,而且在使用变量前必须定义或声明!任何在多个文件中使用的变量

都需要有与定义分离的声明。在此情况下,一个文件中含有变量的定义,使用该变量的其他文件则

包含该变量的声明。

四、const限定符

(1)const变量定义时必须进行初始化,而且定义后不能通过重新赋值等方式被修改。

(2)const对象默认为文件的局部变量,此变量只存在于那个文件中,不能被其他文件访问。

除非:显式的指定它为extern。

// file_1.cc
extern const int buf_size = fcn();
//file_2.cc
extern const int buf_size;
//uses buf_size defined in file_2
五、引用

(1)引用是一种复合类型,通过在变量名前添加“&”符号来定义。每种引用类型都“关联到”

某一其他类型。

(2)引用必须用与该引用同类型对象(不能是常量,必须是“对象”)进行初始化。引用在

定义时必须进行初始化

(3)引用是变量的别名。当引用初始化后,只要该引用存在,就不能将此引用绑定到另一个对象。

(4)非const引用不能指向const对象。

const int ival = 1024;
const int &ref_val = ival;  //OK
int &ref2 = ival;  //error

(5)非const引用只能绑定到与该引用同类型的对象;const引用则可以绑定到不同但相关的类型

的对象或绑定到右值。

// legal for const references only
const int &r = 42;
//
double dval = 3.14;
const int &ri = dval;
六、头文件

(1)头文件一般包含类的定义、extern变量的声明和函数的声明。

(2)因为头文件包含在多个源文件中,所以不应含有变量或函数的定义。

(3)对于头文件不应该包含定义这一规则,有三个例外。头文件可以定义类、值在编译时就

已知的const对象和inline函数。分别解释:

定义类。为了产生能定义或使用类的对象的代码,编译器需要知道组成该类型的数据成员。同样还

需知道能够在这些对象上执行的操作。

值在编译时就已知的const对象。用常量表达式进行初始化的const变量,其值在编译时就已知。

所谓常量表达式是指,编译器在编译时就能计算出结果的表达式。当我们在头文件中用常量表

达式定义了const变量后,每个包含该头文件的源文件都有了自己的const变量,其名称和值都一样。

若const变量不是用常量表达式初始化,那么它就不应该在头文件中定义。相反,和其他的变量

一样,该const变量应该在一个源文件中定义并初始化(注意定义时用extern显式声明)。然后在

头文件中为它添加extern声明。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值