内存管理

内存管理

  • 系统自动管理:栈空间
  • 用户手动管理:堆空间

stdlib.h
-malloc() 分配内存
-free() //释放空间,不释放就不会停止,
//在一个函数中结束就会释放内存,但在一直运行的程序中就会内存泄露(内存一直变少),程序结束就会归还空间
-realloc 重新分配(扩容)
-calloc 分配内存(空间初始化0)
-memset
-memcpy
-memcmp

指针:一种数据类型,存储内存空间的编号(地址)

‘’’c
int *p1; 整型指针
char *p2; 字符指针
//类型不确定的指针
void *p3;

int *p = p3;
char *p = p3;
double *p = p3;

p3=p1;
p3=p2;

*p3 ERROR,需要把他赋给类型确定的指针类型

结构体

数据类型

  • 基本类型
    -int
    -char
    -double
  • 复合类型
    -数组
    -字符串
    -结构体
    -联合
    -类/对象

封装

定义结构体

‘’’c
//自定义的数据类型
struct user
{
char name[16];
int age
char *tel;
}

int a;
struct user u1;

1.结构体变量相互赋值,拷贝了属性的值(复印件)
2.操作结构体的函数,参数应该是指针类型,否则函数无法修改结构体的属性

结构体大小

1.属性类型中在最大值(int long double)的整数倍(字符不算连续的)
2.属性最小往大排序,空间占用最小

结构体指针的使用

阶段项目:短网址转换服务

http://10086.cn/Dax34Fx

URL 超链接