动态存储分配 枚举类型 类型标识符的定义

动态存储分配

有时不知道数据的大小,为了有效解决问题,就可以用动态存储

内存的分配与释放

在写以下函数时要加上头文件#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等价

posted @ 2021-12-12 14:39  valder-  阅读(82)  评论(0)    收藏  举报