变量和基本类型

1.变量声明定义的关系
  • C++语言支持分离式编译机制,该机制允许将程序分割为若干个文件,每个文件可被独立编译。
    为了支持分离式编译,C++将声明和定义分离开来
  • 声明是为了是在一个文件中定义的名字能被其它文件所使用。
    定义负责创建与名字相关联的实体。
  • 变量声明规定了变量的类型和名字。而定义不仅如此,还会申请存储空间,也可能会为变量赋初值
    变量只能被定义一次,但可以被多次声明
  • 关键字extern可以用来声明变量
extern int j;	//声明j
int j;	//定义j
extern int j=0;	//定义
  • 注意: 任何包含了显式初始化的声明都将成为定义。 如果在函数体内部试图初始化有extern关键字标记的变量,则会报错。
2.标识符的组成
  • 标识符由字母、下划线、数字组成。不能以数字开头,不能以下划线紧连大写字母开头。区分大小写。不能和关键字冲突。
  • 用户定义的标识符中不能连续出现两个下划线。定义在函数体外的标识符不能以下划线开头。
3.变量命名规范
  • 标识符要能体现实际含义
  • 变量名一般用小写字母
  • 用户自定义的类名一般以大写字母开头
  • 如果标识符由多个单词组成,以_区分
4.作用域理解
#include <iostream>
//该程序仅用于说明,函数内部不宜定义与全局变量同名的变量
int i=0;//全局变量
int main(){
	std::cout<<i<<std::endl;//输出全局变量 0
	int i=1;//局部变量会覆盖全局变量
	std::cout<<i<<std::endl;//输出局部变量 1
	std::cout<<::i<<std::endl;//输出全局变量 0
	//这里使用了全局作用域操作符
	return 0;	
}
5.引用

引用并非对象,它只是为另一各已经存在的对象所起的另外一个名字。(引用即别名)。
由于无法令引用重新绑定到另一个对象,所以引用必须初始化。
由于引用本身不是一个对象,所以不能定义引用的引用
引用只能绑定在对象上

6.指针
  • 首先指针定义时,会申请一个内存空间。这个内存空间里存放的是地址,指针的值指的就是这个地址的值。指针指向的值(解引用得到的值)指的是这个地址所指向的内存空间的值。改变指针指向的值则会改变这个内存空间里的值
  • 空指针不指向任何对象。最好用nullptr来生成空指针
  • NULL和nullptr的区别
  • 最好初始化所有指针
  • void* 是一种特殊的指针类型,可用于存放任意对象的地址。
    一般用于和别的指针比较,以及用于函数的输入输出,或者赋值给另一个void* 指针。
    不能直接操作void* 指针指向的对象,因为我们不知道对象的类型。
  • 指向指针的指针
int i=1;
int *pi=&i;//pi指向一个int型的数
int **ppi=&pi;//pi指向一个int型的指针
  • 指向指针的引用
	int i=1;
	int *p;//p是一个int型的指针
	int *&r=p;//r是对一个指针p的引用
	r=&i;//r引用了一个指针,因此给r赋值&就是令p指向i	
	*r=0;//解引用r得到i,也就是p指向的对象,将i的值改为0
	cout<<*p<<endl;
	cout<<i<<endl;
7.常量表达式
  • 常量表达式是指值不会改变并且在编译过程就能得到运算结果的表达式。
  • C++11新标准允许将变量声明为constexpr类型以便编译器来验证变量的值是否是一个常量表达式。声明为constexpr的变量一定是一个常量,而且必须用常量表达式来初始化。
  • 声明constexpr所用到的类型必须是字面值类型
8.指针和constexpr
  • 尽管指针和引用都能被定义成constexpr,但它们的初始值却受到严格限制。constexpr的指针的初始值必须是nullptr或者0,或者存储在某个固定地址的对象
  • 函数体内定义的变量一般来说并非放在固定地址内,定义在函数体之外的对象其地址固定不变,能用来初始化consteexpr指针
const int *p=nullptr;//p是一个指向常量的指针
constexpr int *q=nullptr;//q是一个常量指针
constexpr const int *pi=nullptr;//pi是一个常量指针,指向常量

constexpr把它所定义的对象置为了顶层const。

8.字面值类型

算术类型、引用和指针

9.类型别名
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值