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

asp net做购物网站商城网站建设php

asp net做购物网站,商城网站建设php,兰州优化官网推广,asp网站开发心得体会这篇文章是在上期实现的通讯录基础上,增加了自动增容的功能,也解决了一开始通讯录自动开辟一个空间,可能会浪费空间,或者是信息过多无法增容的痛点,由于我们使用的是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/116035/

相关文章:

  • 网站建设设计平台智能搜索引擎
  • aspx 网站开发工具dedecms可以做双语网站
  • 地方门户网站发展趋势什么是搜索引擎竞价推广
  • 网站搜索框新网站如何做seo
  • 北京网站优化推广网站开发的书
  • 闸北手机网站建设全球首个完全响应式网站自助建设平台在中国诞生
  • 域名ip查询入口官网百度推广怎么优化
  • 郑州网站制作工作室顺德网站建设渠道
  • 网站建设 时间安排国内购物网站排名
  • ps做 网站教程河池企业网站开发公司
  • 全屏网站 代码网站建设工作情况
  • wordpress galleria郑州哪里培训网站建设优化好一点
  • 天津做网站比较大的公司企业网站开发需求详细文档
  • 网站建设与运营公司部门结构网站策划需要什么
  • 定远县建设局网站静态网页报告
  • 旅游网站怎么制作淘宝网站c 设计怎么做的
  • 注册公司登录什么网站移动软件管理的应用场景
  • 淘宝网站的订单管理怎么做垂直 网站开发
  • 网站开发基本步骤冠县网站建设公司
  • 网站后台制作表格app网站建设销售
  • 网站的原型怎么做企业网络搭建教程
  • 企业站模板网站cms模板
  • 东莞服务36招seo关键词查询工具
  • 曲靖网站设计校内二级网站建设整改方案
  • 深圳高端网站设计建设官方网站建设流程及费用
  • 广州互联网网站建设html期末大作业
  • 帝国网站增加流量中国式现代化推进中华民族伟大复兴
  • 怎样做公司官方网站求做图的网站
  • 免费申请网站com域名营销技巧和营销方法心得
  • 做网站用vps还是虚拟主机google seo 优化