資料的共享與保護之----物件的生存期
物件從誕生到結束的時間即為生存期,分為:靜態生存期和動態生存期.
靜態生存期
如果物件的生存期和程式的執行期相同,則稱它有靜態生存期.具有靜態生存期的物件有兩類:
1.名稱空間作用域中宣告的物件都具有靜態生存期.
2.區域性作用域(例如函式內部)加上static修飾的物件具有靜態生存期,如 static int hour;
如果初始化未賦初值,則預設為0,而動態生存期變數不賦初值意味著不確定;
特點:不會隨著函式的每次呼叫產生副本,也不會隨著函式返回而失效.
動態生存期
也叫區域性生存期,誕生於宣告點,結束於宣告所在塊結束之時.
相關推薦
資料的共享與保護之----物件的生存期
物件從誕生到結束的時間即為生存期,分為:靜態生存期和動態生存期. 靜態生存期 如果物件的生存期和程式的執行期相同,則稱它有靜態生存期.具有靜態生存期的物件有兩類: 1.名稱空間作用域中宣告的物件都具有靜態生存期. 2.區域性作用域(例如函式內部)加上static修飾的物件具有靜態
Part5 數據的共享與保護 5.3類的靜態成員
space clu ace mes 保護 urn public private ret 靜態數據成員: 1 用關鍵字static聲明 2 為該類的所有對象共享,靜態數據成員具有靜態生存期。 3 必須在類外定義和初始化,用(::)來指明所屬的類。 //5-4具有
Part5 數據的共享與保護 5.6多文件結構和預編譯命令
靜態數據成員 其它 pac object c void 使用 內聯 組合 getx C++程序的一般組織結構: 1 一個工程可以劃分為多個源文件: 類聲明文件(.h文件) 類實現文件(.cpp文件) 類的使用文件(main()所在的.cpp
資料結構與演算法之美專欄學習筆記-排序(上)
排序方法 氣泡排序、插入排序、選擇排序、快速排序、歸併排序、計數排序、基數排序、桶排序。 複雜度歸類 氣泡排序、插入排序、選擇排序 O(n^2) 快速排序、歸併排序 O(nlogn) 計數排序、基數排序、桶排序 O(n) 演算法的執行效率 1. 最
資料結構與演算法之美專欄學習筆記-排序(下)
分治思想 分治思想 分治,顧明思意就是分而治之,將一個大問題分解成小的子問題來解決,小的子問題解決了,大問題也就解決了。 分治與遞迴的區別 分治演算法一般都用遞迴來實現的。分治是一種解決問題的處理思想,遞迴是一種程式設計技巧。 歸併排序 演算法原理 歸併的思想 先把陣列從中間分
資料結構與演算法之美專欄學習筆記-線性排序
線性排序 線性排序的概念 線性排序演算法包括桶排序、計數排序、基數排序。 線性排序演算法的時間複雜度為O(n)。 線性排序的特點 此3種排序演算法都不涉及元素之間的比較操作,是非基於比較的排序演算法。 對排序資料的要求很苛刻,重點掌握此3種排序演算法的適用場景。 桶排序 演算法
資料結構與演算法之美專欄學習筆記-排序優化
選擇合適的排序演算法 回顧 選擇排序演算法的原則 1)線性排序時間複雜度很低但使用場景特殊,如果要寫一個通用排序函式,不能選擇線性排序。 2)為了兼顧任意規模資料的排序,一般會首選時間複雜度為O(nlogn)的排序演算法來實現排序函式。 3)同為O(nlogn)的快排和歸併排序相比,
資料結構與演算法之美專欄學習筆記-陣列
什麼是陣列 陣列(Array)是一種線性表資料結構。它用一組連續的記憶體空間,來儲存一組具有相同型別的資料。 線性表 線性表就是資料排成像一條線一樣的結構。 常見的線性表結構:陣列,連結串列、佇列、棧等。 非線性表有:二叉樹、圖、堆等。 連續的記憶體空間和相同型別的資料 優點:兩限制使得
資料結構與演算法之美專欄學習筆記-複雜度分析
複雜度分析 什麼是複雜度分析 資料結構和演算法解決是“如何讓計算機更快時間、更省空間的解決問題”。 因此需從執行時間和佔用空間兩個維度來評估資料結構和演算法的效能。 分別用時間複雜度和空間複雜度兩個概念來描述效能問題,二者統稱為複雜度。 複雜度描述的是演算法執行時間(或佔用空間)與資料規模的增長關係
資料結構與演算法之美專欄學習筆記-二分查詢(下)
四種常見的二分查詢變形問題 查詢第一個值等於給定值的元素 //查詢第一個等於給定值的元素 public static int BSearch2(int[] a, int n, int value){ //定義陣列頭尾索引 int low = 0, high = n - 1;
資料結構與演算法之美專欄學習筆記-跳錶
跳錶的概念 對連結串列建立n級索引,例如每兩個結點提取一個節點到上一層,稱之為索引層。 圖中的down表示down指標,指向下一級結點 跳錶的時間複雜度 跳錶的高度 跳錶的高度是log2n。 跳錶的時間複雜度 跳錶中查詢某個資料的時間複雜度是O(logn)。
資料結構與演算法之美專欄學習筆記-雜湊演算法
雜湊演算法的定義和原理 將任意長度的二進位制串對映為固定長度的二進位制串。 這個對映的規則就是雜湊演算法,而通過原始資料對映之後得到的二進位制串就是雜湊值。 設計一個優秀的雜湊演算法需要滿足: 從雜湊值不能反向推匯出原始資料(所以雜湊演算法也叫單向雜湊演算法); 對輸入資料非常敏感,哪怕原始
資料結構與演算法之美專欄學習筆記-二叉樹基礎(上)
樹 節點的定義 樹中的元素稱之為節點 高度的定義 節點的高度:節點到葉子節點的最長路徑 樹的高度:跟節點的高度 深度的定義 根節點到這個節點所經歷的邊的個數 層的定義 節點的深度+1 二叉樹 滿二叉樹 除了葉子結點外每個節點都有左右兩個子節點 完全二叉樹 葉子結
《資料結構與演算法之美》專欄閱讀筆記5——散列表和雜湊函式
這應該是看完最呆(沒有想到的那種呆~)的一個小章節了,給作者鼓掌,講的好好。果然抽象能力才是王道 文章目錄 1、散列表 1.1、小概念 1.2、雜湊函式 1
《資料結構與演算法之美》專欄閱讀筆記4——二分查詢
找呀找呀找朋友 文章目錄 1、二分查詢 2、變形的二分查詢 2.1、查詢第一個、最後一個值等於給定值的元素 2.2、查詢第一個大於等於、最後一個小於等於給定值
《資料結構與演算法之美》專欄閱讀筆記3——排序演算法
上週排計劃,說花個一天的時間看完好了(藐視臉)~然後每天回家看一會,看了一個星期……做人,要多照鏡子好嘛 文章目錄 1、簡單排序 1.1 如何分析排序演算法
《資料結構與演算法之美》專欄閱讀筆記2——線性表
換個方式來寫筆記,最近啃完了《Thinking in Java》,想要在看專欄的時候多做點擴充套件性的東西,比如把難撩的泛型加進來做實現,程式碼還是要寫起來才曉得怎麼寫更酷。總之最近看書的過程中、搜尋答案的過程中發出了很多“哇~超厲害!超酷!我也要這樣棒棒噠!”的嘆聲。新的開始,
《資料結構與演算法之美》專欄閱讀筆記1——複雜度分析
蹭可愛的男朋友買的極客時間的專欄【資料結構與演算法之美】,作者讓大家定個學習的flag。o( ̄▽ ̄)o,好吧,最近喜歡做思維導圖(純粹因為好看!),所以flag就是每篇都要寫讀書筆記咯~ 文章目錄 1、如何抓住重點,系統
資料結構與演算法之陣列篇
Q1:為什麼很多程式語言中,陣列都從0開始編號? 舉例說明: 從陣列儲存的記憶體模型上來看,"下標"最確切的定義應該是"偏移(offset)"。前面也講到,如果用a來表示陣列的首地址,a[0]就是偏移為0的位
python 資料結構與演算法之歸併演算法
def merge_sort(alist): n=len(alist) if n<=1: return alist mid=n//2 left_list =merge_sort(alist[:mid]) right_list =mer