一.类
类可以将变量、数组和函数完美的打包在一起。
在定义类的时候一定要在最后面加上 ;
class Person { };
二.结构体
结构体和类可认为几乎没有任何区别。
唯一的区别就在于: 如果结构体里面成员变量没有规定,默认是public;而类默认是private的。
结构体内部也可以和类的内部一样,有构造函数等等。
三.指针
全局变量定义在堆区,而局部变量定义在栈区。
指针指向存放变量的值的地址。因此我们可以通过指针来修改变量的值。
//cout输出地址
char c='a';
cout<<(void *)&c<<endl;
int a=10;
int* p=&a; //p前有*,表示p是一个指针,记录的是一个int型变量的地址。int* 可认为是一种数据类型
cout<<*p<<endl; //*p表示取地址p对应的值,输出的就是a的值。
*p=12; //p地址对应的变量是a,即将a的值赋值为12
cout<<a<<endl; //a的值变成了12
int** q=&p; //指针变量p也是一个变量,所以也可以取地址。
数组名是一种特殊的指针。
存放的是数组的开始地址,也可以认为是数组第一个变量值的地址。
指针是可以进行运算的。
int a[5]={1,2,3,4,5};
int* p=a; //p是指向a[0]的地址
cout<<*(p+2)<<endl; //p+2是指向a[2]的地址,取*,则输出a[2]的值。
scanf("%d",a+1); //给a[1]进行赋值
四.引用
引用就是给变量起别名。
int a=10;
int& p=a; //p就是变量a的别名,两者存储在同一块空间中。
五.链表
5.1 链表的创建
习惯上,将链表的第一个结点叫做头结点head。
通常,我们所说的head是指第一个结点的地址,而不是这个结点本身。
对应的单链表为:
5.2 链表的遍历
5.3 添加结点
通常采用头插法
5.4 删除结点
链表中某个结点的删除是指在遍历的时候遍历不到该节点,就可以了。