数据结构必要的C语言基础
使用C语言学习数据结构之前有一些必要了解的基础,许多同学在初学数据结构时因为对这些知识不熟,导致了对数据结构的畏惧心理。实际上很大一部分来自C语言的基础
C语言 结构体与指针
在一些场景中,如果传递给函数的结构体很大,使用指针方式的效率通常更高。
->
为(* ).
的简写
类型定义
typedef 数据类型 别名
typedef int zx
作用:
- 如果后期需要修改
myType1
的数据类型, 可直接修改typedef
后的数据类型int
为其它数据类型 - 每次声明结构体变量都要写
struct
关键
字,很麻烦,而且逻辑上也很难受,typedef
可以解决这个问题。
typedef struct
{int x;int y;
}po;
int main(int argc,char const *argv[])
{po.p;//加了typedef之后, 声明结构体变量时不需要加struct关键字p.X = 5;p.y = 10;printf("%d\n",p.x);printf("%d\n",p.y);return 0;
}
平时写的代码基本都是栈内存中的
手动控制的内存是堆内存
空指针:NULL
(int*)
:强制类型转换- 64位和32位下
int
占空间不同, 写sizeof
可使代码更通用 - 使用
malloc
后一定要记得free
推荐书:深入理解c指针
时间复杂度
一般只关注时间复杂度, 不关注空间复杂度
空间复杂度:除了输入数据之外, 程序在运行时空间额外的开销
ADT(Abstract Data Type )抽象数据类型
ADT 约等于设计图纸
仅需理解(不理解也没有影响)
示例: