一、数据结构的理解:
1、什么是数据结构?
数据结构就是,如何将现实中大量且复杂的问题以特定的数据类型和特定的存储结构保存在内存中。数据结构解决的是存储问题,其中包括个体数据存储以及个体关系存储。
2、什么是算法?
算法就是对存储的数据的一个操作(对数据相应的操作,如查找、删除、排序等)。
3、衡量一个算法的标准
(1)时间复杂度:程序大概的执行次数,而非程序执行的时间
(2)空间复杂度:算法执行过程中大概所占的最大内存
(3)难易程度
(4)健壮性
二、指针
1、 指针就是C语言的灵魂,最主要的是理解指针存放的是地址,不要使用野指针
2、任何类型的的指针存储大小:32位机——4位、64位机——8位
3、cpu是无法直接在硬盘上读取数据的,而是通过内存读取。cpu通过地址总线、数据总线、控制总线三条线对内存中的数据进行传输和操作。
1、cpu通过地址总线,找到该条数据;
2、通过控制总线得知该操作是读操作还是写操作;
3、通过数据总线将该数据读取到cpu或者从cpu写到内存中。
所以,
地址总线的宽度决定了CPU的寻址能力;
数据总线的宽度决定了CPU单次数据传输的传送量,也就是数据传输速度;
控制总线决定了CPU对其他控件的控制能力以及控制方式
三、结构体(C),C++的可以用类
1、结构体的定义:结构体就是用户根据需求自己定义的一种复合类型
2、理解结构体的几种定义和初始化的方式
3、结构体指针
//一个学生管理系统的类
struct student {
int id;
char name[100];
int age;
};
struct student st = {1100,"zhangsan",20}; //普通的定义并初始化一个结构体变量
struct student *pst = &st; //定义一个结构体指针变量
//结构体指针的赋值 pst->id 等效于 (*pst).id 等效于 st.id
四、动态内存的分配和释放
1、内存分配:malloc()
当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,且分配的大小就是程序要求的大小
int *p = (int *)malloc(sizeof(int) * 100);
//这里为malloc做了强制类型转换,因为其类型是void *型
2、内存释放:free()
free()函数与malloc()配套使用,用于释放开辟的此块动态内存空间