原创 進程間利用管道進行通信:打印斐波那契數列

Fibonacci序列是0, 1, 1, 2, 3, 5, 8, .... ,通常它可以表示爲: f ib0 = 0 f ib1 = 1 f ibn= f ibn−1 + f ibn−2 編寫一個C程序,使用系統調用fork()創建兩個子

原创 侯捷老師的虛函數和多態小結

一個類中成員函數分爲3種: non-virtual:不希望派生類對其進行重寫(override). virtual:希望派生類對其進行重寫(override). pure-virtual(純虛函數):希望派生類一定要對其進行重寫 clas

原创 以簡單的設計模式代碼闡述如何設計委託

先來看看composite組合模式下,是怎麼實現委託的,如果現在面對一個問題,file system,有目錄,目錄裏可以放文件,目錄還能和其他的文件結合在一起放在另外的目錄裏面,這時候需要寫個個體,需要一個組合物,這個組合物應該可以容納組

原创 觀侯捷老師new和delete以及malloc在vc當中調試模式和運行下分配內存

在講到new和delete不得不想到c語言中的malloc and free 以及其經常用於動態內存分配,而簡單來說,動態內存分配在堆中,不會因爲離開作用域而刪除,而棧中存儲的一般爲函數參數,返回值以及作用域下的local orient.

原创 第四章:語句與第五章:操作符和表達式

第四章的語句沒有什麼特別的東西,都是if,while,for,等正常使用的語句,唯一需要注意的是,switch語句中加default語句形成好習慣,之後的學習中會提到使用函數指針來形成轉接表代替某些switch操作。 goto語句不提倡使

原创 第十七章經典抽象數據類型(一)

堆棧,沒什麼太多要總結的,主要是實現問題,這裏自己實現了一下,當然從書本中吸取到的是程序代碼效率的提升和assert斷言的應用判斷。 代碼的提升在於top_element的初值是0和1,對於push,pop本來就要改變的函數來說沒什麼變化

原创 C++編程中類CALSS的編寫(一):不含指針數據的類

首先,在我理解當中,C++編程中的類可以分爲兩種類型,第一種是包含指針的,另一種則是不包含的,不包含指針的類,其中private裏填寫自己的數據,這時候其中的數據類型比如int,double,float等等類型都是標準庫裏面已經寫好的,也

原创 第一章:快速上手注意點

給出第一章的源代碼,簡要的述說一下注意事項(平時在編程中經常會忘記的) #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_COLS 20 /*

原创 樹用鏈表實現(鏈表使用二重指針減少判斷以及空間複雜度)

首先定義每一個結點:struct Node { int value; Node* left; Node* right; }; 查找函數: No

原创 第二、三章小結

第二章主要是闡述了C語言的環境:編譯和執行。 在編譯中基本上編譯器分爲4部分動作: 1.由預處理器進行處理,執行一些文本操作,#define以及#include這些動作 2.編譯,-s把代碼翻譯成彙編語言 3.彙編,把彙編語言翻譯成二進制

原创 面向對象編程的3種關係:組合,委託和繼承

看了侯捷老師一節課的視頻,做一個記錄和小結,在OOP語言中,面向對象編程,類和類之間有3種關係: 1)Inheritance(繼承) 2)Composition(複合) 3)Delegation(委託) 先從Compositon開始講起,

原创 C++編程中類class的編寫(二):含指針數據的類

從上一篇文章一中,我們提到過編寫的類分爲2種,在這裏再對含指針數據的類來進行考量,對於含指針數據的類,必須要進行自己編寫拷貝構造和拷貝賦值(爲了防止

原创 淺談static、類模板和函數模板

首先,我們先來看static,從C語言我們知道,他是一個靜態變量的標識符,可以讓一個變量在離開作用域後,還能夠存活。那麼如果我們在類當中定義了一個s

原创 第十七章經典抽象數據結構二:樹(數組實現)

二叉搜索樹插入: 可以首先要判斷樹是不是爲空(針對鏈表結構是必須的,因爲要分配動態內存),然後插入。有2種選擇,遞歸和循環,因爲遞歸是尾部遞歸,犧牲了空間複雜度獲得了可讀性,可以轉換爲循環。 刪除結點: 分爲3種情況: 1、刪除沒有孩子的

原创 new和delete續

一、單參數的重載 在上次new和delete的講解中已經說明了new和delete運作的過程和內存中其運行過程,這裏補充的是重載::operator new,::operator delete以及[]的形式 不過一旦重載了這2個操作符,影