使用typedef为现有类型创建别名,定义易于记忆的类型名
typedef 还可以掩饰复合类型,如指针和数组。
void*malloc(unsigned int size);
其作用是在内存的动态存储区中分配一个长度为 size 的连续空间。
此函数的返回值是一个指向分配域起始地址的指针(类型为 void).
结构体大小:是由最后一个成员的大小 + 偏移量 (不是数组单纯的相加)
每个成员的偏移量满足:本身偏移量是本身字节的倍数关系,负责系统自动补全;
详细搜:原文:https://blog.youkuaiyun.com/csw_100/article/details/5495309
memset(地址 , 初始化为什么 , 初始对象的长度)
伪代码
Seq*creat(int cap)
{
创建结构体指针赋值为空 temp=NULL
为结构体开辟空间,并赋值给temp
—— if判断开辟是否成功,不是就返回NULL
计算结构体的长度同时对结构体指针内容全部初始化 为0
分别赋值其他成员
为 成员数组开辟连续空间(temp->node)
—— if判断是否开辟成功,否返回NULL
return 成功开辟的结构体指针
}
结构体定义
typedef struct SeqList
{
int cap;//容量
int length;
int *node;//定义了个指针数组(书是这么说的??)
}TSeqList;//这个 是有typedef的 功能实现的,给结构体另起名字,可以是以后定义的时候省略struct;
创建顺序表
SeqList* creat(int cap) //这里用到函数的内容,定义该函数返回的类型为结构体指针类型,即地址 ,传入长度
{
int ret;
TSeqList*temp=NULL;//定义结构体指针
temp=(TSeqList*)malloc(sizeof(TSeqList)) ;//同理 malloc函数计算结构体大小为结构体开辟存储空间的同时返回的结构体指针(地址);
if(temp==NULL) //该函数是为指针分配一个安全的空间
{
ret = 1;//????
printf("open error");
return NULL;
}
memset(temp,0,sizeof(TSeqList));//计算结构体的长度同时对结构体指针内容全部初始化 为0;
temp->cap=cap;//开始赋值
temp->length = 0;
temp->node=(int*)malloc(sizeof(void*)*cap);//分配一个指针数组.计算void指针字节 再乘cap
if(temp->node==NULL)
{
ret = 2;
printf("creat error");
return NULL;
}
retrun temp;
}