基础知识
相比于python等语言,c++是静态类型的,变量的类型在编译时确定,而python在运行时确定。这对于C++编译器来说就必须在编译时知道所有变量的类型。
C++提供了很多内建(builtin)数据类型,运算符及流程控制申明。
C++之所以经久不衰是因为其能允许编程者实现自己的数据类型,并且可以实现很底层的操作。
Built-in Types
类型:定义数据和与之对应的操作
C++内建类型:
- 算数类型:
|
|
void
类型
1 byte = 8 bits,C++的内存是按byte尺度来管理的,int
类型占16 bits,则实际上一个变量占了两个地址单元大小的内存。
变量声明
TYPE NAME = VALUE;
声明的同时进行赋值。
extern
使用extern关键字可以在其他文件中使用本文件中定义的变量
|
|
scope
变量找最近的层,尽量不要让local的变量和global的变量重名。
复合类型(compound type)
引用(reference)&
bind to a local variable, 与一个局部变量绑定,绑定的变量发生改变,本变量就改变
不能和字面量(literal)和const绑定:
|
|
指针(pointer)
定义指针:
- TYPE * NAME = ADDRESS_LIKE
解引用的步骤
- 找到地址
- 根据地址去获取目标值
指针与引用的区别
引用一定要进行初始化
|
|
const
- 用const修饰的变量不可在后面的过程中不可改变
- 必须要进行初始化(和引用一样)
使用场景:
- 不想数据被更改
|
|
- 不想参数传递到函数后被更改
|
|
const 与 引用结合
- 不能将常量绑定到非常量上
|
|
- 引用不一定需要类型匹配
|
|
const 与 指针结合
top-level const 修饰对象本身
low-level const 修饰基本类型(base type)
从右往左读
|
|
第二句定义的对象pointer从右往左理解就是:
- pointer是一个const对象
const pointer
- 这个const对象是一个指向int的指针(int *)
int * const pointer
- 指向的int*是const的
const int * const pointer
Type Alias
- using namespace::object
- auto
- decltype
|
|