#标准输入输出对象
cin,cout
cerr(输出警告和错误信息),clog(输出程序运行时的一般性信息)
#字面值常量
整型,浮点型字面值,
字符与字符串字面值,
布尔字面值,指针字面值;
#引用,指针,理解复杂类型的声明
引用:
1必须初始化,且初始值为对象;
2.引用本身不是对象,所以不能定义 引用的引用;
3.引用只是一个别名;
int ival =1024; int &refval = ival; //必须初始化
指针:
1.指针本身是对象;无须定义时赋初值;
2.*p, 其中p是变量名;
取地址符 & ,解引用符 *
声明时:
int *p = &ival;
赋值时:
p = &ival1;
指向指针的指针
int ival = 1024; int *pi = &ival; int **ppi = π
指向指针的引用:
int i =3; int *p; int *&r = p; r= &i; *r=0;
复合类型的声明
int ival = 1024; int *pi = &ival; int **ppi = pi; //指向指针的指针;
指针值(地址)应属于4种状态之一:
1.指向一个对象;2.指向紧邻对象所占空间的下一个位置;3.空指针(nullptr).4.无效指针;建议初始化 所有的指针.void* 是一种特殊的指针类型,可以用于存放 任意对象 的地址
double obj =3.14,*pd = &obj; void *pv = &obj; pv = pd;
int ***pi2; int **&r2 = ppi;
#const 限定符
1.const 对象必须初始化;
2.const的引用
const int ci = 1024; const int &r1 = ci;
3.指针与const
顶层const 表示 指针本身是常量;
int i = 0 ; int *const p1 = &i;//不能改变p1的值;
底层const 表示 指针所指的对象是一个常量;
const int ci =41; const int *p2 = &ci;//允许改变p2的值,这是一个底层const
#类型别名
1.关键字 typedef
typedef double wages;
2.别名声明 using
using SI = Sales_item;
!!!指针,常量和类型别名
typedef char *pstring; const pstring cstr = 0; //cstr是指向char的常量指针
const pstring *ps; //ps是一个指针,它的对象是指向char的常量指针;
#auto类型说明符
#decltype 类型指示符
它的作用是选择并返回操作数的数据类型;
decltype (f()) sum =x;//sum的类型就是函数f的返回类型;
decltype和引用
切记:decltype((variable)) 注意是双层括号的结果永远是引用;
tobecontinued