原创 C++指針和數組:字符和字符串、字符數組

1、字符串是一種重要的數據類型,但是c語言並沒有顯示的字符串數據類型,因爲字符串以字符串常量的形式出現或者存儲於字符數組中。 2、在C++標準模板庫(STL)中提供了string類,實現了對字符串的封裝。但是其實現原理還是居於字符和指針,

原创 C++指針和數組:指針數組

1、基本含義 指針數組:數組中的元素全部爲指針,也就是數組中存放的是指針,基本形式如下:  類型名     標識符  數組長度 看一下具體的例子就清楚了:                                          

原创 結構體及其應用:結構體的深度拷貝,結構體內含指針

1、在前一篇文章中提到,儘量不要使用賦值操作符來操作結構體,這其中所涉及的便是結構體的深度拷貝。        對於下面這個例子: struct teacher { char szName[24]; int age;

原创 C++指針和數組:二級指針和二維數組

1、在講二維數組之前,我們先搞清楚一些基本的概念:        1)、數組名代表的是數組首元素的地址,這是一個常量。即數組已經定義,它的含義便已經明確了,數組就是一個固定內存塊大小的別名        2)、數組首元素的地址和數組的地址

原创 結構體及其應用:認識結構體

1、結構體作爲一種數據結構,可以靈活的用來表示多種數據的集合,不僅僅在C語言中應用廣泛,在C++中也 是頗爲常見。 2、結構體在C語言中和C++中有着一定的區別,主要是結構體的定義形式上會有一定的差別,這一點會在後面 的例子中提及 3、在

原创 C++指針和數組:數組指針應用,函數指針

1、數組指針的形式       int (*pArray)[10];       數組指針區別於指針數組,有關指針數組的知識以及應用請看: C++指針和數組:指針數組       int (*pArray)[10];//中存放的元素爲in

原创 C++指針和數組:認識指針和數組

注:本文章是基於C++98的標準來寫的,有關C++11的標準的知識後續會陸續更新 1、C/C++在數組和指針方面的內容相差無幾,故有關C方面的指針也可以加以參照 2、數組的定義和初始化           定義一個數組:Int a[10]

原创 數據結構和算法C++語言實現:使用鏈表實現稀疏多項式

1、鏈表的基礎知識        關於鏈表的基礎知識還有不熟悉的,請查看鏈表的實現(基於動態內存分配) 2、使用鏈表實現稀疏多項式,也是基於上述的鏈表來實現的。        稀疏多項式可以當作一種鏈表結構,所以,可以直接從上述的鏈表派生

原创 C++ 內存佈局:深入理解C++內存佈局

1、虛函數簡介       虛函數的實現要求對象攜帶額外的信息,這些信息用於在運行時確定該對象應該調用哪一個虛函數。典型情況下,這一信息具有一種被稱爲vptr(virtual table pointer,虛函數表指針)的指針的形式。vpt

原创 數據結構和算法C++語言實現:雙向鏈表

1、雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數據結點中都有兩個指針,分別指向直接後繼和直接前驅。所以,從雙向鏈表中的任意一個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。 2、如果對鏈表還不熟悉,可以看鏈表的基礎知識 和 鏈表

原创 數據結構和算法C++語言實現:鏈表的實現

1、設計一個類來實現ADT牽涉到標識出那些需要來實現ADT操作的函數成員,如果最終能夠獲得一個計劃良好易於使用的類,那麼在這個階段所花費的時間最終將得到回報。我們還需要認識到,我們對函數成員的描述與這個類將如何實現是沒有關係的。 2、設計

原创 C++內存佈局:深入立即C++內存佈局下

我們繼續完成內存佈局的講解。 這次需要講解的內容如下: 基類不含虛函數,使用虛繼承,派生類中含有虛函數 基類含有虛函數,使用虛繼承,派生類中不含虛函數 基類含有虛函數,使用虛繼承,派生類中含有虛函數 基類含有虛函數,使用虛繼承,向下派生

原创 C++ 內存佈局:內存佈局基礎

1、在C++中,內存分成5個區,他們分別是堆、棧、自由存儲區、全局/靜態存儲區和常量存儲區。     棧:在執行函數時,函數內局部變量的存儲單元都可以在棧上創建,函數執行結束時這些存儲單元自動被釋放。棧內存分配運算內置於處理器的指令集

原创 數據結構和算法C語言實現:使用鏈表實現稀疏多項式

1、前面講了如何使用動態分配內存的方式創建ADT鏈表,但是鏈表只是一種數據結構,涉及到具體的應用時,我們需要根據具體的要求來對鏈表進行一定的修改,這地方我使用多項式的例子來進行講解。 2、涉及到鏈表的相關的操作前面已經進行了細緻的講解,這

原创 C/C++高階語法:函數指針引用,引用與指針

1、函數指針引用的定義如下:      type  (*  &pFunc)(type,type) ( func); 2、看一段實例 int (*add)(int ,int); int (*&pFunc)(int ,int)(add);