动态内存管理
常用函数:malloc ralloc realloc free 原则:谁申请谁释放
void *calloc(size_t nmemb,size_t size)//连续申请n块m个大小的内存空间
void *malloc(size_t size)//申请m个大小的空间
void *free(void *ptr)//释放申请的空间
void *realloc(void *ptr,size_t size)//重新为我分配上述两个函数申请的空间
用malloc实现动态长度的数组存储:
int main()
{
int i,num = 5;
int *p = NULL;
p = malloc(sizeof(int)*num);
for(i = 0 ; i<num ; i++)
scanf("%d",&p[i]);
for(i = 0 ; i<num ; i++)
printf("%d ",p[i]);
printf("\n");
exit(0);
}
用free释放空指针不会报错,用free释放指针后,如果再次使用指针会变成野指针。
typedef:为已有的数据类型改名
typedef 已有的数据类型 新名字
例如:
typedef int ARR[6] //是给int[6]改名,而不是给int改名
ARR a --> int a[6]
typedef struct
{
int i;
float f;
}NODE,*NODEP;//为结构体改名
typedef int FUNC(int)
FUNC f; --> int f(int);//为函数改名
typedef int *FUNC(int)
FUNC f; --> int *f(int);//为指针函数改名