• 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>库,平时并没有怎么接触过,所以也不太敢写。

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

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

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

  • 相关阅读:
    fastdfs部署及官网
    fasrdfs在spring cloud中的使用
    面包屑的查询
    SpringCloud中使用ES使用课程上下线
    Redis中在项目中的使用
    树结构Tree查询
    平凡的世界 田晓霞的日记 摘抄

    英语积累
    英语学习第四天
  • 原文地址:https://www.cnblogs.com/yimingzou/p/3428617.html
Copyright © 2020-2023  润新知