枚举---enum:它的本意就是列举事物,比如,颜色和性别,则代码为:
#include<stdio.h>
//枚举的示例:性别,颜色
enum sex//性别
{
	MALE,
	FEMALE,
	SECRTY
};
enum  clore//颜色
{
	ROW,
	BLUS,
	GREEN
};- 枚举在C语言中运用的比较多,这里就不过多的展开了,那么就来讲一讲,动态内存管理,这个就非常的重要的,它有四种函数:malloc,free,calloc,realloc。我们一一来介绍它们。
- 我们为什么要有动态内存分配呢?对于一般的C语言,我们需要向它申请一定的空间,才能存一个内存,这样就非常的麻烦,所以就有动态内存的分配,
- malloc函数:它的返回类型为void*,它的头文件:<stdlib.h>,它的表达式为:void* malloc(size_t size);。这个函数就可以向内存申请一块连续可用的空间。这个代码为: #include<stdlib.h> int main() { //20个字节,存放5个整数 int* p = malloc(5 * sizeof(int)); if (p == NULL) { perror("malloc"); return 1; } //使用空间 int i = 0; for (i = 0; i < 5; i++) { *(p + i) = i = 1; printf("%d\n", p[i]); } return 0; }这个就是malloc的使用。必须要有判断是否为NULL。 
-  但是这个malloc还有一定的缺陷,要到最后,把空间的使用权限还给操作空间,那就需要free这个函数来实现, 
-  free函数:它的表达式为:void free(void* ptr);,free是用来释放动态开辟的内存。比如,就拿malloc这个例子来说,它所对应的代码为: //free的使用 int main() { //20个字节,存放5个整数 int* p = malloc(5 * sizeof(int)); if (p == NULL) { perror("malloc"); return 1; } //使用空间 int i = 0; for (i = 0; i < 5; i++) { *(p + i) = i = 1; } free(p);//此时p为野指针,传递free函数的是要释放的内存空间的起始地址。 p = NULL;//现在为空指针。 return 0; }但是,这里  一定不要改写成这个: 一定不要改写成这个: 如果是这个的话,则代码会崩掉。我们再写个代码巩固一下: 如果是这个的话,则代码会崩掉。我们再写个代码巩固一下:
则代码为:
int main()
{
	int num = 0;
	scanf("%d", &num);
	int arr[num] = { 0 };
	int* ptr = NULL;
	ptr = (int*)malloc(num * sizeof(int));
	if (NULL != ptr)//判断ptr指针是否为空 
	{
		int i = 0;
		for (i = 0; i < num; i++)
		{
			*(ptr + i) = 0;
		}
	}
	free(ptr);//释放ptr所指向的动态内存 
	ptr = NULL;//是否有必要? 
	return 0;
}
这个就充分展现了free的作用。
- 还有两个calloc和realloc我们下一章再讲,请尽请期待吧。



















