该章主要讲了基本内置变量以及const关键字
下面是注意点:
无符号的数与有符号的数相加会把有符号的数转为无符号的数
unsigned u = 10;
int i = -42;
cout << i + u <<endl; //out -84
cout << u + i <<endl; //out 4294967264
将有符号的数转为无符号的数,然后取模相加
复合类型
引用类型:
引用就是给对象起另外一个名字,这样改变了引用也就改变了对象
int val = 1024;
int &refVal = val;
△引用声明的时候必须要被初始化:像下面这个就是错误的
int &refVal2; //没有被初始化
△引用初始值必须是对象
int &n = 3; //错误
△引用类型要和对像类型一致
int a = 1;
double &b = a; //错误
引用不是一个对象,一旦绑定就不能再次改变他。
指针:
指针和引用的区别:
①指针本身就是一个对像,允许为其复制拷贝,可以指向不同的值
②指针不需要定义的时候赋值。
声明与初始化:
int n = 23;
int *p = &n;
指针的类型要和指向的对象类型一致
空指针:
int *p1= nullptr;
int *p2 = 0;
int *p3 = NULL;
void*指针可以存放任意类型的对象地址
指向指针的指针:
int *p = $n;
int **p1 = $p;
指向指针的引用:
int *p;
int *&r = p;//r是指针p的引用:
const限定符
cosnt修饰的变量是不能再次改变的。
在对个文件中同时出现的同名的const的变量,其实就等于在不同文件中分别定义了独立的变量。
如果要是在一个文件中定义的变量,想要再其他文件中访问,解决办法就是在变量前加extern关键字,
extern const int buf = 1024;
const修饰的引用
const修饰的指针(也叫常量指针,必须初始化)
int num = 0;
int *const p = # //这个情况是不能改变指针存的地址,也就是指针只能指向这一个变量。(顶层const)
const int a = 1
const int *p = &a;//这个情况是指针指向的是常量,不能改变指针指向的值。(底层const)
constexpr和常量表达式
类型别名 ①typedet ②using SI = Sales_item;同义词
auto类型
auto是让编译器通过初始值来推断变量的类型。
auto sum = a + b;//auto就是int 类型
decltype类型指示符
自定义数据类型