1. 理解C++变量的作用域和生命周期

#include<stdio.h>

char * test()
{
char s[]="";
return s;
} main()
{
puts(test());
}

test在调用结束后

系统给test分配的资源全部被释放

主函数main  调用test()所得到的值,将不会是期望的值1

截图:

2. 理解堆和栈,两种内存的申请和释放的方式

1、栈  由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2、堆  一般由编程者分配释放, 若编程者不释放,程序结束时可能由OS回收 。它与数据结构中的堆是两回事,分配方式类似于链表。

 int a = ; 全局初始化区
char *p1; 全局未初始化区
main() {
int b; 栈
char s[] = "abc"; 栈
char *p2; 栈
char *p3 = ""; \0在常量区,p3在栈上 p1 = (char *)malloc();
p2 = (char *)malloc(); 分配得来得10和20字节的区域就在堆区。 strcpy(p1, ""); \0放在常量区,编译器可能会将它与p3所指向的""优化成一个地方。
} 申请方式 stack: 由系统自动分配。 例如,声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间 heap: 需要编程者自己申请,并指明大小 在c中malloc函数 如int *p1 = (int *)malloc(); 在C++中用new运算符 如int *p2 = new int[]; 但是p1、p2本身是在栈中的。

3. 理解unique_ptr和shared_ptr

a) http://msdn.microsoft.com/en-us/library/vstudio/hh279676.aspx

b) http://msdn.microsoft.com/en-us/library/vstudio/hh279669.aspx

unique_ptr:  该指针只能指向内存上的一个资源,该指针被删除时,绑定的资源也将被释放

shared_ptr:对于内存上的统一个资源可以有多个不同的指针指向它,当所有指向该资源的指针都被删除时,该资源被释放

4. 请尝试用“C++0x”,“C++11 & STL”两种不同的代码风格分割一个url,并上传代码到博客上。

For example:

Input: http://msdn.microsoft.com/en-us/library/vstudio/hh279674.aspx

Output: http, msdn, Microsoft, com, en-us, library, vstudio, hh279674, aspx

考察重点:

1. 类的定义和使用,基本成员是否完整

2. 输入参数的检查及其他鲁棒性的考虑

3. STL和C++11元素的使用

4. 除http://之外, 是否有考虑ftp:// site:// 等情况

5. 是否考虑url中的中文

6. 算法是否简洁高效

7. 代码风格

c++0x风格

 //借助strtok实现split
#include <string.h>
#include <stdio.h> int main()
{
char s[];
const char *d = "/.:";
gets(s);
char *p;
p = strtok(s,d);
while(p)
{
printf("%s,",p);
p=strtok(NULL,d);
} return ;
}

运行结果

c++ stl 风格

str 需要分割的string
pattern 分割字符串的字符的string std::vector<std::string> split(std::string str,std::string pattern)
{
std::string::size_type pos;
std::vector<std::string> result;
str+=pattern;//扩展字符串以方便操作
int size=str.size(); for(int i=; i<size; i++)
{
pos=str.find(pattern,i);
if(pos<size)
{
std::string s=str.substr(i,pos-i);
result.push_back(s);
i=pos+pattern.size()-;
}
}
return result;
}

【现代程序设计】【homework-08】的更多相关文章

  1. 现代程序设计homework——04

    题目: 详见:http://www.cnblogs.com/xinz/p/3341551.html 题目本身确实很难,“很难想到一个比较优雅的算法”,这是一个老师请来专门讲解这道题的大牛的原话.确实, ...

  2. 软工+C(9): 助教指南,持续更新...

    上一篇:提问与回复 下一篇:从命令行开始逐步培养编程能力(Java) 目录: ** 0x00 Handshake ** 0x01 点评 ** 0x02 评分 ** 0x03 知识储备 ** 0x04 ...

  3. 20145219 《Java程序设计》第08周学习总结

    20145219 <Java程序设计>第08周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口,使用日志的起点是log ...

  4. 2016CCPC东北地区大学生程序设计竞赛【01/03/05/06/08】

    吧啦啦啦啦啦啦啦啦啦啦啦能量,ACM,跨!变身!变成一个智障! 04正在酝酿中!!!马上更新!!!!!  01题意:有一个n个点的图,对于任意两个不同的点,他的权值是两个点下标的最小公倍数,求最小生出 ...

  5. Python Revisited Day 08 (高级程序设计技术)

    目录 8.1 过程型程序设计进阶 8.1.1 使用字典进行分支 8.1.2 生成器表达式与函数 8.1.3 动态代码执行与动态导入 动态程序设计与内省函数(表) 动态代码执行 eval(), exec ...

  6. 20145210 《Java程序设计》第08周学习总结

    第十四章 NIO与NIO2 14.1 认识NIO •NIO概述 •NIO使用频道来衔接数据结点 •在处理数据时,NIO可以让你设定缓冲区容量 •Channel架构与操作 •isOpen():确认Cha ...

  7. 团体程序设计天梯赛L2-013 红色警报 2017-03-23 22:08 55人阅读 评论(0) 收藏

    L2-013. 红色警报 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 战争中保持各个城市间的连通性非常重要.本题要求你编写一 ...

  8. 长春理工大学第十四届程序设计竞赛(重现赛)L.Homework Stream

    链接:https://ac.nowcoder.com/acm/contest/912/L 题意: 作为大珩班尖子生,小r每天有很多作业要完成,例如工图.工图和工图. 很显然,做作业是要有顺序的.作业之 ...

  9. C语言作业|08

    问题 答案 这个作业的属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9977 我 ...

  10. C语言I作业08

    C语言I作业08 这个作业属于哪个课程 C语言程序设计ll 这个作业的要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/9981 ...

随机推荐

  1. hadoop拾遗(三)---- 多种输入

    虽然一个MapReduce作业的输入可能包含多个输入文件(由文件glob.过滤器和路径组成),但所有文件都由同一个InputFormat和同一个Mapper来解释.然而,数据格式往往会随时间而演变,所 ...

  2. init_MUTEX

    2.6.25及以后的linux内核版本废除了init_MUTEX函数 新版本使用sema_init函数 平台:X86 32位内核:2.6.24定义: 引用 static inline void ini ...

  3. Android开发之获取状态栏高度、屏幕的宽和高

    转自:http://blog.csdn.net/guolin_blog/article/details/16919859 获取状态栏的高度. private static int statusBarH ...

  4. 1641. Duties

    1641 枚举 #include <iostream> #include<cstdio> #include<cstring> #include<algorit ...

  5. Python3 学习第二弹: 字符串String

    字符串表示问题 常见用法 '' 与 "" 就不提了 一些特殊用法 三引号:接收多行字符串的输入 >>>print('''Oh my God!''') Oh my ...

  6. ACM - ICPC World Finals 2013 A Self-Assembly

    原题下载 : http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf 这道题其实是2013年我AC的第一道题,非常的开心,这 ...

  7. 宏buf_pool_struct

    typedef struct buf_pool_struct buf_pool_t; /** @brief The buffer pool structure. NOTE! The definitio ...

  8. Qt之进程间通信(共享内存)

    简述 上一节中,我们分享下如何利用Windows消息机制来进行不同进程间的通信.但是有很多局限性,比如:不能跨平台,而且必须两个进程同时存在才可以,要么进程A发了消息谁接收呢? 下面我们来分享另外一种 ...

  9. BZOJ2253: [2010 Beijing wc]纸箱堆叠

    题解: 其实就是求三维偏序最长链.类似于三维逆序对,我们可以用树状数组套平衡树来实现. DP方程 :f[i]=max(f[j]+1) a[j]<a[i] 我们按一维排序,另一位建立树状数组,把第 ...

  10. Jquery 模板插件 jquery.tmpl.js 的使用方法(2):嵌套each循环,temp调用(使用预编译的模板缓存)

    直接上代码吧 一:主窗口 /*#region SendChooseTargetTemplate 发送候选人主窗口模板*/ var SendChooseTargetTemplate = ''; Send ...