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++是比較博大精深的,值得去鑽研探索,若是用好的話,能在不少方面有很大的幫助。長姿式了!

本站公眾號
   歡迎關注本站公眾號,獲取更多信息