- 常量/变量
- 函数
- 执行结构
- I/O
-
回调函数
- 回调函数,其实就是将函数名作为指针,赋值给另外的指针变量;举个例子:int abc(void),有这样一个函数定义,那么我在定义个指针:typedef int (*p)(void); 那么此时,可以这样:p = abc;当我们的函数很多需要一起执行的时候,那么可以用函数指针数组来存储;这样,就可以循环执行该数组的函数,而不用一个个去执行;
- 数组
- 指针
- 结构/struct
-
基本
- 这里主要说明的就是基本的存储,基本的逻辑结构,基本的输入输出;不管在什么时候,这三项都需要注意。
- 常量
- 变量
- 在C语言中说的是顺序执行,简单来说,就是第一步做什么,第二步做什么。。。第N步做什么。。最后,要么退出执行体,要么死循环。
- I/O,说的就是输入输出,对应基本函数是scanf/printf,当然其他还有扩展;主要是在哪里执行,然后程序等待你输入什么值,然后他执行完毕给你输出什么值。
- 函数,即C语言的执行体,从main函数开始执行,然后通过调用其他自定义函数、标准库函数、系统函数等等。当然main函数的入口是可以更改的,只不过需要深入到底层,一般不这么做。函数名是什么呢?当编译完成之后,会有一个符号表,这里,地址和名称对应,所以函数名即指针。
- 有必要说下这个类型:
类型定义变量,实际上就是分配了内存空间给变量进行存储;
基本的32位系统中:
double 8个字节
long long 8个字节
int 4个字节
long 4个字节
float 2个字节
short 2个字节
char 1个字节,还可以通过typedef定义新的类型,在结构那里会提到
- 主要由const ,static, extern修饰;用类型名定义(比如int a)
- 执行结构
- I/O
- 函数
- 类型
-
进阶
- 一维数组、二维数组,经常用;其实二维数组在存储上和一维数组的区别仅仅是寻址的位置不同,实际上地址是线性增加,所以理解为一维数组也没什么问题。
- 指针,实际上就是地址;常用的是一级指针(*p)、二级指针(**p);由于指针是地址,所以凡说和地址有关的都可以用指针变量来表示,如数组首地址,变量地址,函数地址,指针的地址等都能存入指针变量;需要注意的问题:1、定义指针的方法:int *p = NULL;这里说明该指针能寻址四个字节;那么*p = a;则给该四个字节的存储空间里面存入了变量a的值;
- 结构,属于自定义的数据类型;也就是说,我们可以把其他类型综合到一个类型里面来;当然,枚举也是一种类型;在使用的过程中,结构和基本类型是同样的方法定义变量。
- 数组
- 指针
- 结构