//常量,必须初始化,之后不可作为左值
const int ival=1;
/*
变量
1.如果是全局内置类型变量,会进行默认初始化,初始化为0或者空串,false
2.如果是局部内置类型变量,未经过初始化就使用会导致错误,编译失败
3.如果是类类型对象,取决于默认构造函数
*/
int ival1;
/*
整型指针,可以进行算术运算,移动单位取决于指针类型,解引用前需确保指针所指空间不为空
*/
int* ival2=&ival1;
/*
整型指针的指针
*/
int **ival22=&ival2;
/*
整型变量的引用,不是对象,没有内存空间,没有地址,只是别名而已,不存在引用的引用,不存在引用的指针,必须初始化,之后不可解绑
*/
int& ival3=ival1;
/*
整型指针的引用
*/
int* (&ival4) = ival2;
//语法错误,因为引用不是对象,没有内存空间,没有地址,不存在引用的指针,不存在引用的引用
int& (* ival5);
//语法错误,因为引用不是对象,没有内存空间,没有地址,不存在引用的指针,不存在引用的引用
int& (& ival5);
/*
顶层const,表示这个整型指针是常量,必须初始化,且不可重新赋值
*/
int* const ival6 = &ival1;
/*
整型引用,这里的const没有意义,因为引用本身定义的时候就必须初始化,且一旦绑定就不可解绑
*/
int& const ival7 = ival1;
//底层const,表示整型常量的指针,指针可以重新赋值,但不可用指针修改整型常量
const int* ival8;
//底层const,表示整型常量的引用,引用任何时候都需要初始化,且不可重新赋值,这里const表示不可通过引用修改原常量
const int& ival9=ival1;
//整型常量的指针常量,必须初始化,既不可修改指针,也不可修改指针所指对象
const int* const ival = &ival1;
//整型常量的常量引用,必须初始化,不可修改引用,不可修改引用所引对象
const int& const ival = ival1;
return 0;