Time of Update: 2018-12-05
kingwei 2005.3.11實驗環境: Windows XP, Dev-C++ 4.9.6.0 (gcc/mingw32)1. 關於char的數值輸出 v_char = 0; for (i=0; i<256; i++) { printf("# %d/n", i); printf("%d/n", v_char); /* No.1 */ printf("%u/n", v_char); /* No.2 */ printf("%d/n", (int)v_char); /*
Time of Update: 2018-12-05
最近採用ACE實現了一個通用的C/S架構通訊程式,具體實現簡述如下:1. 伺服器端:一個採用領導者/跟隨者模型的線程池不斷地接受從多個用戶端發來的訊息,並放入一個訊息佇列,然後又有一個採用半同步/半非同步模型的線程池不斷地從這個訊息佇列中取出訊息進行處理。伺服器端代碼如下:(共10個檔案)ACE_Server.cpp#include "ace/SOCK_Acceptor.h"#include "ace/Acceptor.h"#include
Time of Update: 2018-12-05
鮮有解譯器(或編譯器)實現了switch控制。無它,唯複雜爾。SharpC將switch劃分為兩個部分實現:switch(運算式)和case。先看Case的實現,由條件值和執行部分組成:public class Case : ControlFlow { public Expression.Operand.Value Value; public Block Body { get { return Children.Count &
Time of Update: 2018-12-05
偶有閑暇,添加了對結構的支援。也增加了對typedef structname synonym的支援。技巧:1. 結構成員在解析時轉換成相對結構於的起始地址之位移。2. 在運行時導出成員的實際地址(運行時變數才會分配地址 )。3. 成員按ValueOfPointerIndiction方式訪問。 範例程式碼:struct StructA {int a;int b;};StructA theA;theA.a = 1;theA.b = 2;print("theA.a=%i\ntheA.b=%i",
Time of Update: 2018-12-05
如果運行以下包含於多次遞迴調用的測試C代碼:...void fork2(int a, int b){if ((a + b) % 1024 == 0)print("iterate fork2: a=%i, b=%i\n", a, b);if (a + b == 2)return;elsefork2(--a, --b);}...void main(){ ... fork2(65535, 65535);
Time of Update: 2018-12-05
偶用C#寫.NET視窗程序,需要線上程內更新控制項,用到的C#的委託模型。IT還真是個有趣的行業,新瓶裝舊酒,層出不窮。如何理解C#的委託模型?先從Windows的視窗機制說開去吧。視窗有自己的線程處理訊息迴圈,C++編寫視窗程序就需要與視窗訊息打交道,並且,如果不是在訊息迴圈中而是從別的線程中操作控制項,比如繪圖,個性標籤等,就需要處理同步問題。用C++寫視窗程序的哪個沒有定製過訊息?哪個不知道那個著名的訊息迴圈處理過程?又有幾個不知道同步?但在C#中, 視窗訊息迴圈被隱含和抽象了,對於同步問
Time of Update: 2018-12-05
#include <QtCore/QCoreApplication>#include <iostream>#include <stdio.h>using namespace std;class A{public: A(); static void GetStaticNum(); //靜態函數 void GetNum(); //普通函數 void UseStatic(); //普通函數調用靜態函數 int j;
Time of Update: 2018-12-05
拷貝構造書曰,拷貝構造在下面三種情況下發生:1.用一個對象初始化另一個對象class A{};A a;A b(a);A b =
Time of Update: 2018-12-05
今天一天,發現自己對C++的認識還處於低級水平。一天發現了3個以前的認識錯誤。1.虛函數指標的長度用sizeof是可以看到的,原來以為一直是不包括的。這個地方我一直以為是取決於實現的,好多年前看過《C++物件模型》,不知道是記錯了還是記混了。原來看見penghao的一篇PPT上有一個問題是memset一個類(有虛函數),會導致什麼問題,他當時的答案是覆蓋虛表,我居然忽視了這個問題。今天在調試的時候發現小白的一個bug,就是這個問題。今天翻看了一下《Think in
Time of Update: 2018-12-05
其它編程經驗11.1 使用const提高函數的健壯性看到const關鍵字,C++程式員首先想到的可能是const常量。這可不是良好的條件反射。如果只知道用const定義常量,那麼相當於把火藥僅用於製作鞭炮。const更大的魅力是它可以修飾函數的參數、傳回值,甚至函數的定義體。 const是constant的縮寫,“恒定不變”的意思。被const修飾的東西都受到強制保護,可以預防意外的變動,能提高程式的健壯性。所以很多C++程式設計書籍建議:“
Time of Update: 2018-12-05
C語言基礎一 C語言程式的基本文法結構:1、主函數main() main()函數的常見結構如下所示。voidmain(){… /*函數體*/}2、 如果需要在程式執行時接受命令列參數,則main()函數的格式如下。voidmain(intargc,char * argv[] ){ …}二、單行語句與複合陳述式1
Time of Update: 2018-12-05
//最大的區別體現在字串拼接的時候string str1="hello ";string str2="world";str1 += str2;//此時記憶體中存在三個對象分別為str1("hello world"), str2("hello"),以及一個沒有任何引用的垃圾//對象"hello"(該對象,最終會被GC收集,清理)StringBuilder sb=new StringBuilder();sb.Append("hello
Time of Update: 2018-12-05
文章目錄 預設監聽器程式 我們下一個將要分析的代碼檢測技術是跟蹤。在一個多線程應用程式中,這個技術非常重要。當已經啟動了多個任務時,你可以跟蹤一個線程的行為和相互之間的各個線程之間的影響。我們稍後將看到在這種情況下使用調試器是不現實的。.NET Framework 提供了很多有用的類來協助開發人員輕鬆地實現跟蹤功能。讓我們看一下.NET Framework 提供的System.Diagnostics 命名空間中的跟蹤類。 1.
Time of Update: 2018-12-05
程式開發難免會有大資料量操作,在操作大量資料時,有時候需使用者等待,在這一段時間內既不想讓使用者點其它操作,又不像讓使用者感覺程式假死了。怎麼辦?對,就是要需使用一個等待的閃屏,告訴使用者"資料讀取中"旁邊還有一個gif動畫在轉動。等到完成操作時,閃屏自動關閉。接下來看看效果:可能會有很多同學笑我了:這麼簡單的東西,還拿出來寫?簡單是簡單了點兒,可是對於一個WinForm不熟悉的人來說卻也費了不少周章。再接下來是實現方式1、簡單的實體類。(PS:因為是個小Demo 這個實體就沒怎麼加註釋,^_^
Time of Update: 2018-12-05
引用能起到指標的部分作用,但是比指標安全.一個引用可以看作是某個變數的一個"別名"。對引用進行操作就像對原變數進行操作一樣。主要用於函數的參數傳遞時使用。因為C語言沒有類似VB的“傳引用調用”這個功能,所以C++的引用填補了這個空白。從此即使需要改動參數,也直接傳遞一個變數過去即可。這在操作符重載中有更重要的意義。等你學到以後才會明白。int a; //聲明變數aint& ra = a;
Time of Update: 2018-12-05
按理說應該是一個二叉樹的題,許久以前用數組做的 ~代碼如下:#include<stdio.h>#include<string.h>char m[33][33];int main(){#ifdef wct freopen("sample.txt","r",stdin);#endif char m[150],a[150],b[30],flag[100]; int value,i,j,len,count,flagnum,num[30],numval[30];
Time of Update: 2018-12-05
描述:題目很簡單,剛開始考慮問題時忽略了所有的字母所代表的值需要全部變化後才進行運算,結果交了幾次錯誤碼,悲催啊……#include <iostream>#include <cstring>#include <cstdio>using namespace std;int main(){ //freopen("a.txt","r",stdin); int n,i,j; int s_flag[27],s_add[27],s_value[27];
Time of Update: 2018-12-05
(1)fgets:表標頭檔 include<stdio.h>定義函數 char * fgets(char * s,int size,FILE * stream);函數說明 fgets()用來從參數stream所指的檔案內讀入字元並存到參數s所指的記憶體空間,直到出現換行字元、讀到檔案尾或是已讀了size-1個字元為止,最後會加上NULL作為字串結束。傳回值 fgets()若成功則返回s指標,返回NULL則表示有錯誤發生。如果size <= 0,返回NULL 如果size ==
Time of Update: 2018-12-05
富有活力的語言需要不斷改變和成長,C++也不例外。在本文中,Bjarne Stroustrup提出了自己對C++的設計和演化的看法。為了讓編譯器、工具和類庫實現者跟上節奏,讓使用者吸收標準C++所支援的編程技術,在早有預計的、沉寂了幾年之後,委員會再次考慮語言擴充問 題了。”擴充工作群組”已經建立了,它代替了”演化工作群組”。名稱的改變(這是Tom Plum的建議)反映了更重要的是語言特性和標準類庫工具的整合。我
Time of Update: 2018-12-05
C++primer第636頁string *sp = new string(...);當我們調用new時,實質上發生了3個步驟:1,new運算式調用名為operator new 的標準庫函數,分配夠大的原始的未類型化的記憶體2,運行該類型的一個建構函式,以初始化構造對象3,返回新構造的對象的指標delete sp;當我們使用delete運算式,發生兩部1,對sp指向的對象運行適當的解構函式2,調用名為operator delete 的標準庫函數釋放該對象所用的記憶體