编号 | 说明 |
1 | 基本内置类型:
(1)算术类型 (char/int/bool/float/double/……) signed/unsigned 类型转换 当算术表达式中既有int值又有uint值时,int值转换为uint值 字面值常量 (2)空类型(void) |
2 | 变量
初始值 列表初始化 int x = 0; int x = {0}; int x{0}; int x(0); 以上4种都是正确的 默认初始化 关于内置类型变量,定义于任何函数体之外的变量被初始化为0,函数体内部是不被初始化的 绝大多数类支持无需显式初始化而定义对象 分离式编译 声明 extern int i; //仅声明 int j; //声明+定义 extern int k = 1; // 定义 标识符 字母、数字、下划线 大小写敏感 用户自定义标识符不能出现连续两个下划线,也不能以下划线紧连大写字母开头 定义于函数体外的标识符不能以下划线开头 |
3 | 名字的作用域
多数以{}分割 嵌套作用域 |
4 | 复合类型
比如:指针,引用
|
5 | 引用
左值引用:常见 右值引用:C++11引入
引用必须初始化 引用即别名 一旦定义引用,就不能再绑定到其他对象 |
6 | 指针
指针存放对象地址,初始化时使用取地址符& 空指针nullptr void*指针,可用于存放任意对象的地址 |
7 | 复合类型声明
int i = 1024, *p = &i, &r = i; int* p1, p2; // p1是指针,p2是int型 |
8 | 指向指针的指针 ** 指向指针的指针的指针 *** |
9 | 指向指针的引用合法 指向引用的指针不合法 int i = 42; int *p; int *&r = p; r = &i; *r = 0; |
10 | const限定符 const对象一旦创建,其值不能改变 const int i = get_size(); // 运行时初始化 const int j = 42; // 编译时初始化
默认情况下,const仅在文件内有效
const的引用 const int a = 1; const int &b = a; // 合法 b = 2; // 不合法 int &c = a; // 不合法
临时量 |
11 | 指针和const
指向常量的指针不能用于改变其所指对象的值 |
12 | const指针 int a=0; int *const b = &a; // b一直指向a const double c = 3.14; const double *const d = &c; // d是一个指向常量对象的常量指针 |
13 | 顶层const 表示指针本身是个常量 底层const 表示指针所指向的对象是个常量 |
14 | constexpr
指针和constexpr 仅对指针有效 |
15 | 处理类型
类型别名 typedef a b; using a = b; |
16 | auto |
17 | decltype decltype的表达式如果是加上括号的变量,结果将是引用 decltype((i)) d; // 错误,d是int&,必须初始化 |
Cpp Primer 学习笔记 第2章
最新推荐文章于 2024-07-11 23:10:21 发布