当前位置: 首页 > news >正文

网站备案现场外贸是做什么的工作内容是什么

网站备案现场,外贸是做什么的工作内容是什么,做企业网站类型,网站设计制作是什么这篇文章是在上期实现的通讯录基础上,增加了自动增容的功能,也解决了一开始通讯录自动开辟一个空间,可能会浪费空间,或者是信息过多无法增容的痛点,由于我们使用的是malloc这类函数来开辟空间,我们也需要来…

这篇文章是在上期实现的通讯录基础上,增加了自动增容的功能,也解决了一开始通讯录自动开辟一个空间,可能会浪费空间,或者是信息过多无法增容的痛点,由于我们使用的是malloc这类函数来开辟空间,我们也需要来释放空间,所以我们定义了一个销毁通讯录的函数.

上期文章 :1.0版本

 

1.增容策略 

这里我们也不用2倍或者是1.5倍增容,我们干脆就一开始给可以容纳三条信息的空间,后面每次增容两条信息的空间,主要是便于我们的测试,这里我们定义两个宏,便于我们以后来调整开始和增容的人数.

#define DEFAULT_SIZE 3
#define DEFAULT_INC 2

2.修改代码

2.1初始化

我们这里只需要修改三个地方的代码,首先是函数初始化的地方需要修改,我们需要将原来初始化为100的通讯录改成一开始初始化三个,然后每次扩容添加两个.

//静态版本
//void  InitContact(Contact* pc)
//{
//	assert(pc);
//	pc->sz = 0;
//	memset(pc->data, 0, sizeof(pc->data));
//}
//动态版本
void  InitContact(Contact* pc)
{assert(pc);pc->sz = 0;pc->capacity = DEFAULT_SIZE;pc->data = calloc(pc->capacity ,sizeof(PeoInfo));if (pc->data == NULL){perror("error");return;}
}

2.2 增容 

 接下来就是对添加函数进行修改了,这里我们将添加函数中的扩容功能封装成另一个函数,减少代码的耦合性,使得看起来更清爽.

//静态版本
//void AddContact(Contact* pc)
//{
//	assert(pc);
//	if (pc->sz == MAX)
//	{
//		printf("通讯录已满,无法增加");
//		return;
//	}
//	printf("请输入名字:>\n");
//	scanf("%s", pc->data[pc->sz].name);
//	printf("请输入年龄:>\n");
//	scanf("%d", &(pc->data[pc->sz].age));
//	printf("请输入性别:>\n");
//	scanf("%s", (pc->data[pc->sz].sex));
//	printf("请输入电话:>\n");
//	scanf("%s", (pc->data[pc->sz].tele));
//	printf("请输入地址:>\n");
//	scanf("%s", (pc->data[pc->sz].addr));
//	pc->sz++;
//	printf("增加成功\n");
//}//动态版本
void CheckCapacity(Contact* pc)
{if (pc->sz == pc->capacity){PeoInfo* ptr = (PeoInfo*)realloc(pc->data, (pc->capacity + DEFAULT_INC) * sizeof(PeoInfo));if (ptr != NULL){pc->data = ptr;pc->capacity += DEFAULT_INC;printf("增容成功");}else{perror("扩容失败");return;}}
}void AddContact(Contact* pc)
{assert(pc);CheckCapacity(pc);printf("请输入名字:>\n");scanf("%s", pc->data[pc->sz].name);printf("请输入年龄:>\n");scanf("%d", &(pc->data[pc->sz].age));printf("请输入性别:>\n");scanf("%s", (pc->data[pc->sz].sex));printf("请输入电话:>\n");scanf("%s", (pc->data[pc->sz].tele));printf("请输入地址:>\n");scanf("%s", (pc->data[pc->sz].addr));pc->sz++;printf("增加成功\n");
}

2.3 销毁空间 

 接下来我们对开辟的空间进行销毁,本质上就是对指针置空,释放空间即可.

void DestoryContact(Contact* pc)
{free(pc->data);pc->capacity = 0;pc->sz = 0;pc->data = NULL;
}

 

 

http://www.yayakq.cn/news/361545/

相关文章:

  • 泾川网站建设开平网站建设公司
  • 建设网站毕业设计开题报告wordpress源码学习
  • 哪个网站学习做辅助网站被k 多久恢复
  • 华为云怎么做网站南通做微网站
  • 天津做网站找哪家好网站建设大庆
  • 做商城网站合作合同做网站要几个人
  • 怎么做属于自己的领券网站做网站需要哪些人才
  • 温州营销网站公司哪家好wordpress做动态页面
  • 网站开发毕业设计书凤岗网站仿做
  • phpcms网站模板怀化网站建设联系方式
  • 新乡模板建站百度一下百度搜索首页
  • 济南济阳网站建设免费申请域名空间
  • 个人博客网站制作论文免费简历制作app
  • 网站翻译建设风讯网站内容管理系统
  • 枣庄做网站公司微信公众号怎么做网页
  • 参考文献 教学网站建设wordpress编辑权限看不到媒体库
  • 怎么开个人网站asp access网站开发实例精讲
  • 松江做营销网站哪些平台可以建立网站
  • 网站的后台是开发做的贵州建设工程招标协会网站
  • 百度网站推广公司重庆网站改版
  • 南京调查公司网站如何做好产品网络推广
  • 网站做拓扑图编辑工作有效性
  • 福建做网站的公司音乐类网站模板
  • 西安网站制作定制彬县网约车
  • 无锡建设网站制作阿里云虚拟主机wordpress建站
  • 一级做a视频在线观看网站企业邮箱怎么注册?
  • 网站建设的功能需求分析策划书网站点击换图片的效果怎么做
  • 呼伦贝尔网站建设上海华东建设发展设计有限公司网站
  • 黄江仿做网站sem seo新手好做吗
  • 公司做个网站多少钱天津网站建设诺亚