homework-08

此次做业是考察关于C++的一些使用,因为个人C++只掌握了基本功,因此我只有霸王硬上弓,勉强写写本身的浅见。ios

 

1. 理解C++变量的做用域和生命周期程序员

 

对一个C++变量来讲,有两个属性很是重要:做用域和生命周期,它们从两个不一样的维度描述了一个变量--时间和空间。顾名思义,做用域就是一个变量能够被引用的范围,如:全局做用域、文件做用域、局部做用域;而生命周期就是这个变量能够被引用的时间段。不一样生命周期的变量,在程序内存中的分布位置是不同的。一个程序的内存分为代码区、全局数据区、堆区、栈区,不一样的内存区域,对应不一样的生命周期。浏览器

全局变量数据结构

  • 做用域:全局做用域
  • 生命周期:程序运行期一直存在

全局静态变量函数

  •  做用域:文件做用域
  • 生命周期:程序运行期一直存在

静态局部变量url

  • 做用域:局部做用域
  • 生命周期:程序运行期一直存在

局部变量spa

  • 做用域:局部做用域
  • 生命周期:程序运行出局部做用域即被销毁

 

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int lyd=1;
 5 extern int lyd;
 6 
 7 int main(){
 8   cout<<lyd<<end1;
 9   return 0;
10 }

 

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

 

申请方式:code

stack: 由系统自动分配。  orm

heap: 须要程序员本身申请,并指明大小,在C++中malloc 函数
   

释放方式:

stack: 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操做方式相似于数据结构中的栈。  
heap: 通常由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。

 

#include<iostream>
using namespace std;

int a = 0; 
char *p1;

main(){
  int b;  
  char s[] = "abc"; 
  char *p2
  char *p3 = "123456";  
  static int c =0;
  p1 = (char *)malloc(10);
  p2 = (char *)malloc(20);
  strcpy(p1, "123456");
}

 

3. 理解unique_ptr和shared_ptr

 

unique_ptr是一种定义在<memory>中的智能指针。它持有对对象的独有权——两个unique_ptr不能指向一个对象,不能进行复制操做只能进行移动操做。unique_ptr在超出做用域,即如下状况时它指向的对象会被摧毁。

shared_ptr是一种智能指针。做用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。一旦最后一个这样的指针被销毁,也就是一旦某个对象的引用计数变为0,这个对象会被自动删除。

 

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

 

因为接触URL比较少,要用两种代码风格分割URL,实在是有些困难。这里写一下URL简介,URL是统一资源定位符(Uniform Resource Locator,缩写为URL)是对能够从互联网上获得的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每一个文件都有一个惟一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

 

小结:整体感受C++是比较博大精深的,值得去钻研探索,若是用好的话,能在不少方面有很大的帮助。长姿式了!

本站公众号
   欢迎关注本站公众号,获取更多信息