Time of Update: 2018-12-03
假設在test.h中定義了一個static bool g_test=false;若test1.c和test2.c都包含test.h,則test1.c和test2.c分別產生兩份g_test,在test1.c 中置g_test=true,而test2.c中仍然為false並未改變!shit!!一、c程式儲存空間布局C程式一直由下列部分組成: 1)本文段——CPU執行的機器指令部分;一個程式只有一個副本;唯讀,防止程式由於意外事故而修改自身指令; 2)初始化資料區段(資料區段)—
Time of Update: 2018-12-03
@函數名稱: strdup 函數原型: char *strdup(const char *s) 函數功能: 字串拷貝,目的空間由該函數分配 函數返回: 指向拷貝後的字串指標 參數說明: src-待拷貝的源字串 所屬檔案: <string.h> #include <stdio.h> #include <string.h> #include <alloc.h> int main() { char *dup_str,
Time of Update: 2018-12-03
這幾個宏是為了進行條件編譯。一般情況下,來源程式中所有的行都參加編譯。但是有時希望對其中一部分內容只在滿足一定條件才進行編譯,也就是對一 部分內容指定編譯的條件,這就是“條件編譯”。有時,希望當滿足某條件時對一組語句進行編譯,而當條件不滿足時則編譯另一組語句。 條件編譯命令最常見的形式為: #ifdef 標識符 程式段1 #else 程式段2 #endif
Time of Update: 2018-12-03
class A{public: A() { printf(" A "); } ~A() { printf(" ~A "); }};class B{public: B(A &a):_a(a) { printf(" B "); } ~B() { printf(" ~B "); }private: A _a;};int main(){ A a; B
Time of Update: 2018-12-03
呼呼,最近很少寫部落格了,不是不想寫啊,感覺寫部落格有些浪費時間,畢竟一篇高品質的博文,必須花很多時間的。比如Xerces-c,光寫一個完整的例子就要花去兩三天,而且例子要參考的東西很多,比如Xerces-c的api、智能指標、Xerces-c的安裝、Xerces-c的標頭檔等等,我覺得這些東西真不是一篇博文能解決的。還好,我已經把例子上傳到google
Time of Update: 2018-12-03
:http://code.google.com/p/my-threads-pool/downloads/list---------------------------------------------割了---------------------------------------------------
Time of Update: 2018-12-03
最近,linux上遇到string為漢字時,需要轉碼存入到資料庫中,將轉碼的函數及其方法記錄一下。見函數: 標頭檔是#include <iconv.h> //fromcode:源string使用的字元集,如"UTF-8";,對於漢字每個漢字為3個位元組儲存 //tocode:目的string使用的字元集,如"GB2312";,對於漢字每個漢字為2個位元組儲存 //in:需要轉碼的字串 //out:轉碼後的字串 int iconv_code(const
Time of Update: 2018-12-03
許多不錯的例子內容:第一章視窗的動畫效果帶有工具列的對話方塊單文檔啟動介面實現全螢幕顯示實現透明表單為對話方塊程式製作真彩色啟動介面為對話方塊添加右鍵菜單為應用程式添加多語言菜單隱藏應用程式在工作列上的顯示在視窗中使用多個視圖類動態切分視窗第二章捕獲滑鼠繪圖捕捉螢幕映像擷取螢幕上顏色介面上實現3D文字列舉當前系統的字型判知BMP圖片的大小圖片的伸縮顯示顯示資源位元影像遊覽大圖第三章CArray類的應用CListCtrl 控制項的應用IP
Time of Update: 2018-12-03
作用:保證一個類僅有一個執行個體,並提供一個訪問它的全域訪問點。UML結構圖:解析:Singleton 模式其實是對全域靜態變數的一個取代策略,上面提到的Singleton模式的兩個作用在C++中是通過如下的機制實現的:1)僅有一個執行個體,提供一個類 的靜態成員變數,大家知道類的靜態成員變數對於一個類的所有對象而言是惟一的 2)提供一個訪問它的全域訪問點,也就是提供對應的訪問這個靜態成員變數的靜態成員函數,對類的所有對象而言也是惟一的.在C++中,可以直接使用類域進
Time of Update: 2018-12-03
作用:定義一個用於建立對象的介面,讓子類決定執行個體化哪一個類。Factory Method 使一個類的執行個體化延遲到其子類。UML結構圖:抽象基類:1)Product:建立出來的對象的抽象基類.2)Factory建立對象的Factory 方法的抽象基類.介面函數:1)Creator::FactoryMethod:純虛函數,由衍生類別實現,建立出對應的Product.解析:在
Time of Update: 2018-12-03
作用:將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。UML結構圖:適用於以下情況:1)當建立複雜物件的演算法應該獨立於該對象的組成部分以及它們的裝配方式時。 2)當構造過程必須允許被構造的對象有不同的表示時。抽象基類:1)Builder:這個基類是全部建立對象過程的抽象,提供構建不同組成部分的介面函數介面:1)Builder::BuildPartA,Builder::BuildPartB:是對一個對象不同部分的構建函數介面,Builder的衍生類別來具體實現.另
Time of Update: 2018-12-03
1,首先明確 std是一個 命名空間的名字。2,其次,明確STL是 Standard Template Library的縮寫,即標準模板庫。3,2者關係: In fact, all identifiers of the C++ standard library are defined in a namespace called std. 而STL被容納與C++ Standard Library裡。 即2者均屬於 C++ Standard
Time of Update: 2018-12-03
轉自:360 圖書館2011-09-24 09:30 在C++中子類繼承和調用父類的建構函式方法 構造方法用來初始化類的對象,與父類的其它成員不同,它不能被子類繼承(子類可以繼承父類所有的成員變數和成員方法,但不繼承父類的構造方法)。因此,在建立子類對象時,為了初始化從父類繼承來的資料成員,系統需要調用其父類的構造方法。 如果沒有顯式的建構函式,編譯器會給一個預設的建構函式,並且該預設的建構函式僅僅在沒有顯式地聲明建構函式情況下建立。構造原則如下: 1.
Time of Update: 2018-12-03
[liuzy@linux237 testcode]$ vi testhms.c 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define hdg 30 //時針每轉動一下走30度 4 #define mdg 6//分針每轉動一下走6度 5 #define sdg 6//秒針每轉動一下走6度 6 int gethourdg(int h,int m) 7 {
Time of Update: 2018-12-03
#include <stdio.h>#include <stdlib.h>#include <conio.h>#define X " Sun Mon Tue Wed Thu Fri Sat"#define P printf#define B break#define FP fprintfvoid print(int n){ int i; for(i=0;i<n;i++) printf(" ");}int day(int year){ long a,b;
Time of Update: 2018-12-03
問題:如題。假設有父類A與子類BA執行個體化一個對象a B執行個體化一個對象b那麼在記憶體中 a與b的地址關係是什麼。是他們的首地址都一樣嗎?解答:他們是沒有必然關係的。就跟你隨便產生另外兩個其他類型的變數一樣。當然,你執行個體化的對象b跟A有關係。b對象開頭的部分4個位元組是虛函數表,接著就是基類的資料成員,然後是子類的資料成員。 對方:C++中的類對象執行個體化後存在記憶體中的什麼位置,堆還是棧?我(思索,但不確定):
Time of Update: 2018-12-03
C語言結構體對齊也是老生常談的話題了。基本上是面試題的必考題。結構體到底怎樣對齊?下面總結了對齊原則,在沒有#pragma pack宏的情況下:原則1、普通資料成員對齊規則:第一個資料成員放在offset為0的地方,以後每個資料成員儲存的起始位置要從該成員大小的整數倍開始(比如int在32位機為4位元組,則要從4的整數倍地址開始儲存)。原則2、結構體成員對齊規則:如果一個結構裡有某些結構體成員,則該結構體成員要從其內部最大元素大小的整數倍地址開始儲存。(struct a裡存有struct
Time of Update: 2018-12-03
原貼最初發表在QQ空間: http://user.qzone.qq.com/31731705/blog/1310540087 上個月面試了一些快要畢業在找工作的學生,有個奇怪的感覺,學校就是學校,搞的東西大多是理論或者演算法方面的,聽的我是雲裡霧裡,還有就是很NB很酷的那種,動不動就是核心,驅動,有分析Linux核心源碼的,有做Windows核心驅動的。還記得當時我問一個學生,為什麼你看的是Linux
Time of Update: 2018-12-03
原貼最初發表在QQ空間:普通C++程式員 VS 文藝C++程式員,http://user.qzone.qq.com/31731705/blog/1323153107 BBS上看到一個講C++的文章, C++ 這孩子 是不是誤入歧途了?,讓我想起了普通青年和文藝青年。 看這個經典的NB程式,求一個數有多少bit。J普通C++程式員namespace traditional { int bits_of(int remain) { if (remain) return 1+bits_of(
Time of Update: 2018-12-03
最初發表在QQ空間,見:C++代碼的維護,從執行個體說起小問題有大智慧-Proxy 伺服器的監測 是幾個月前的文章,最近碰到別人問如何設定代理的問題,又回顧了部分代碼,雖然時間不長,還是有不少記不清了。,於是就整理了那個設定代理的函數,代碼是實踐的科學,每寫一次,都會有點心得。先把代碼貼出來,這個函數的大概流程是,先查詢當前的瀏覽器設定,然後根據使用者的設定,再決定1. 無代理 2. 使用自動設定指令碼 3. 使用某個代理