动态存储分配 枚举类型 类型标识符的定义
动态存储分配
有时不知道数据的大小,为了有效解决问题,就可以用动态存储
内存的分配与释放
在写以下函数时要加上头文件#include"stdlib.h"
malloc()
void *malloc(unsigned long);
只有一个参数,即一个无符号长整型数据。用来指定分配内存空间的字节数。分配成功,返回起始地址;失败返回NULL
calloc()
void *calloc(unsigned long,unsigned long);
用来给数组分配空间(也可以给结构体数组分配)。第一个参数是数组的元素个数,第二个是数组元素的字节数。
该函数会清除分配内存空间的数据
注:malloc()更具有通用性,calloc()更适用于为数组分配内存空间
realloc()
void *realloc(void *,unsigned long);
用于调整已经分配的内存空间的大小
第一个参数必须是用malloc()或calloc()得到的内存首地址,第二个是新的空间的字节数。重新分配的空间会保留原来的数据
free()
void free(void *p);
用来释放动态分配的内存空间
参数p用来指定释放的空间的地址,通常带入malloc()函数返回的地址,释放由p指向的内存区域
int *point;
point=(int *)malloc(10*sizeof(int));
...
free(point);
若malloc的返回值是null,程序会报错,返回不可预知的后果
枚举类型
定义
枚举常量本质上是整数,可以进行·比较运算
由关键字enum开头
enum week{sun,mon,tue,wed,thu,fri,sat};
没有特别指明时,第一个枚举类型常量从=0开始(sun=0),之后依次递增
也可以指定枚举常量的值
enum week{sun=1,mon,tue,wed,thu,fri,sat};
即第一个常量为1,之后依次递增
使用
定义之后,还需定义实际的枚举类型变量,才能使用枚举类型数据
enum week weekday;
如上,weekday是week的枚举类型变量,一般情况下,其值是枚举常量中的一个
类型标识符的定义
允许程序员定义自己的数据类型标识符,使用关键字typedef,用来标识某种已存在的数据类型。
注:这并不是定义新的数据类型,只是给已存在的用另一种名字定义
//typedef 类型说明符 标识符
typedef float real;
typedef suruct node Node;
如上,real与float等价,suruct node与Node等价

浙公网安备 33010602011771号