zoukankan      html  css  js  c++  java
  • homework-08

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

    a) 用少于10行代码演示你对局部变量的生命周期的理解

     1 #include <iostream>
     2 using namespace std;
     3 void p()
     4 {
     5     int a = 0;
     6     cout<<a<<endl;
     7     a = 1;
     8 }
     9 int main()
    10 {
    11     p();p();
    12     return 0;
    13 }
    View Code

    如程序所示,在函数p中声明了局部变量a,在主函数中调用2次函数p,其中局部变量a的值在两次调用中都是重新赋值的。

    局部变量的生命周期就是函数段,作用域也就是函数段中。

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

    a) 用少于30行代码演示你对堆和栈两种内存申请方式的理解

     1 #include <iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int *stack;
     6     int a = 10;
     7     stack = &a;
     8     cout<<stack<<endl;
     9     int *heap;
    10     int *b = new int[10];
    11     heap = b;
    12     cout<<heap<<endl;
    13     delete []b;
    14     return 0;
    15 }
    View Code

    如程序所示,栈,由编译器自动分配与释放;堆,需要手动申请与释放,若没有释放,则在程序结束时由操作系统回收。

    在C++中,用new申请堆空间,用delete释放堆空间,若无delete,容易产生内存泄露现象。

    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是一种智能指针,它的特点是两个unique_ptr指针不能指向同一个对象,不能进行复制操作,只能进行移位操作。

    当超出使用域和寿命周期时,unique_ptr指针指向的对象将被删除。

    与之相反,shared_ptr则可以多个指针指向相同元素,即可记录引用次数。

    当引用次数为0时,这些指针指向的对象才会被删除。

    其他内容请见homework-07。

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

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 int main()
     6 {
     7     char str[1010];
     8     gets(str);
     9     for (int i = 0;i < strlen(str);i++)
    10     {
    11         if (str[i] == ':' && str[i + 1] == '/' && str[i + 2] == '/')
    12         {
    13             i = i + 2;
    14             printf(", ");
    15         }
    16         else if (str[i] == '.' || str[i] == '/') printf(", ");
    17         else printf("%c",str[i]);
    18     }
    19     printf("
    ");
    20     return 0;
    21 }
    View Code

    上面代码为平时不用高端大气上档次的stl的方法所写,大概思路就是碰到://、:、/时候断开即可。

    想尝试一下stl的方法,根据我的C#&Java编程经验,分割字符串用的函数是split函数,但是在C++里的split函数不太容易调用...

    首先需要用到<vector>库,平时并没有怎么接触过,所以也不太敢写。

    最后还是决定试着写了写,果断编译都过不了...

    还是由于没找到神马好的例子吧...没法进行代码仿写...

    中文问题:由于在字符数组中,中文存在两个字符中,所以上述方法应该可以实现。

  • 相关阅读:
    jq幻灯片2013-8-31
    jq设置样式
    KindEditor编辑器常用操作
    深入理解JavaScript模拟私有成员
    后台常见报错处理和注意问题(二)
    从项目上一个子查询扩展学习开来:mysql的查询、子查询及连接查询
    在MySQL中使用子查询和标量子查询的基本用法
    HQL语句中数据类型转换,及hibernate中createQuery执行hql报错
    SQL中的cast()函数
    模糊搜索:concat各种函数详解、like操作符、通配符
  • 原文地址:https://www.cnblogs.com/yimingzou/p/3428617.html
Copyright © 2011-2022 走看看