Time of Update: 2018-12-05
這段時間在學習C語言,寫了下面這樣一段代碼struct student{ char name[50]; char number[12]; struct student *next;};int main(){ struct student * head,*p,*temp; head=(struct student *)malloc(sizeof(struct student)); if(head==NULL) { printf("分配記憶體失敗!");
Time of Update: 2018-12-05
《編程之美》中的“讓CPU佔用率曲線聽你指揮”一題,作者給出的解法3非常清晰簡潔。其思想就是直接查詢當前CPU佔用率,若過高則Sleep一段時間,否則一直迴圈。代碼使用C#編寫。於是自己想將這一思路使用C/C++來實現。那麼首先需要查清楚windows提供了哪些操作效能監控器(perfmon.msc)的API。在網上搜尋一下,在vckbase上有一篇文章恰好是講解這一主題的。這些操作效能監控器的API都以pdh開頭。只要知道這一點,就可以在MSDN上查到完整資料。在MSDN中的索引中輸入PDH,
Time of Update: 2018-12-05
有的時候我們用到別人的控制項,但這個控制項本身為DoubleClick已經附加了一個事件處理常式,比如我們雙擊這個控制項的時候會彈出一個表單,但我們又不想要這個表單,但我們又不能用DoubleClick-=。。。。。。的方法屏蔽,因為這個事件處理常式是別人寫好的,不在我們的代碼中,這個時候我們怎麼才能幹掉原來的DoubleClick處理常式呢?假如我們所使用的控制項類名為testControl,一個執行個體名叫testControl1,這個控制項本身有個DoubleClick處理方法,是彈出一個
Time of Update: 2018-12-05
Ref 和 out 區別在C# 中,既可以通過值也可以通過引用傳遞參數。通過引用傳遞參數允許函數成員更改參數的值,並保持該更改。若要通過引用傳遞參數, 可使用ref或out關鍵字。ref和out這兩個關鍵字都能夠提供相似的功效,其作用也很像C中的指標變數。它們的區別是:1. 使用ref型參數時,傳入的參數必須先被初始化。對out而言,必須在方法中對其完成初始化。2. 使用ref和out時,在方法的參數和執行方法時,都要加Ref或Out關鍵字。以滿足匹配。3.
Time of Update: 2018-12-05
有如下的類:class base{public:base(char* pStr){m_pStr = pStr;cout << pStr << " Constructor!" << endl;}~base(){cout << m_pStr << " Destructor!" << endl;}void fund(char* pStr){if (pStr != NULL){static base b(pStr);}}void
Time of Update: 2018-12-05
預設建構函式就是不提供顯示的(包含沒有參數和預設參數)初始化值,被用來建立對象的建構函式。用於下面這種聲明的建構函式Stock stock1;註: 若且唯若沒有定義任何建構函式的時候,編譯器才會提供預設建構函式, 當我們定義了建構函式,那麼我們就必須提供預設建構函式,如Stock(const char *co, int n, double pr);
Time of Update: 2018-12-05
首先,看如下8個題,如果您能不看任何資料的情況下做對。那麼恭喜您,這塊應該基本沒問題了。因為再複雜的組合都是從這上面8種裡變出來的。1,定義一個整形數2,定義一個指向整形數的指標3,定義一個指向指標的指標,它指向的指標,是一個指向整形數的指標4,定義一個具有10個整形數的數組5,定義一個具有10個指標的數組,這些指標都是指向整形數的6,定義一個指向有10個整形數 數組的指標7,定義一個指向函數的指標,該函數有一個整形參數
Time of Update: 2018-12-05
說明:此處內容是在網上摘抄的,總結一下,為了以後尋找方面。new是在堆上分配記憶體,它需要用delete釋放,否則會造成記憶體流失(使用的記憶體沒有即時釋放,造成記憶體的浪費)而A a在右大括弧執行後,會自動釋放記憶體如int main(){A a;//定義了一個a對象A *p=new A;//在堆上定義了一個對象,它的指標儲存在p裡,注意,堆上定義的對象沒有名字,必須用指標儲存return 0;}//a到這裡的時候,它佔用的記憶體就會被回收 而p,除非調用delete p;
Time of Update: 2018-12-05
#include <stdio.h>#include <math.h>int isPrime(int n);int main(){ int i = 2; for ( i=2; i<=100; i++) { if(isPrime(i)) printf(\"i = %5d\",i); }}int isPrime(int n){ int i = 0; for(i=1;i<sqrt(n);i++) { if(n%i==0) return 0; }
Time of Update: 2018-12-05
main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); } 輸出:2,5 *(a+1)就是a[1],*(ptr-1)就是a[4],執行結果是2,5 &a+1不是首地址+1,系統會認為加一個a數組的位移,是位移了一個數組的大小(本例是5個int) int *ptr=(int *)(&a+1); 則ptr實際是&(a[5]
Time of Update: 2018-12-05
C++堆與棧的區別 轉載:http://blog.chinaunix.net/space.php?uid=589727&do=blog&id=2732643一、預備知識—程式的記憶體配置 一個由c/C++編譯的程式佔用的記憶體分為以下幾個部分 1、棧區(stack)— 由編譯器自動分配釋放 ,存放函數的參數值,局部變數的值等。其操作方式類似於資料結構中的棧。 2、堆區(heap) — 一般由程式員分配釋放, 若程式員不釋放,程式結束時可能由OS回收
Time of Update: 2018-12-05
是用連結的編譯器 4.1.2 編譯qt4.5.2,./configure 能過,make就過不了了,如下錯誤<built-in>:0: note: candidates are: void* operator new(unsigned int)make[1]: *** [.pch/release-shared-emb-arm/QtCore.gch/c++] 錯誤 1make[1]: Leaving directory
Time of Update: 2018-12-05
exit() 結束當前進程/當前程式/,在整個程式中,只要調用 exit ,就結束 return() 是當前函數返回,當然如果是在主函數main, 自然也就結束當前進程了,如果不是,那就是退回上一層調用。在多個進程時.如果有時要檢測上進程是否正常退出的.就要用到上個進程的傳回值.. exit(1)表示進程正常退出. 返回 1; exit(0)表示進程非正常退出. 返回 0. 進程環境與進程式控制制(1): 進程的開始與終止 1. 進程的開始: C程式是從main函數開始執行,
Time of Update: 2018-12-05
轉自:http://hi.baidu.com/qrs1/blog/item/c4b5dbcd0fa0d2590fb345e5.html 1. 以下三條輸出語句分別輸出什嗎?[C易]char str1[] = "abc";char str2[] = "abc";const char str3[] = "abc";const char str4[] = "abc";const char* str5 = "abc";const char* str6 = "abc";cout <<
Time of Update: 2018-12-05
1、在函數中一般都是固定的參數調用,為了實現可變參數調用,需要用到stdarg.h庫中聲明的幾個宏定義。2、定義 在VC++6.0的include有一個stdarg.h標頭檔,有如下幾個宏定義: #define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) #define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
Time of Update: 2018-12-05
4.執行SQL命令並取得結果記錄集 為了取得結果記錄集,我們定義一個指向Recordset對象的指標:_RecordsetPtr m_pRecordset;並為其建立Recordset對象的執行個體: m_pRecordset.CreateInstance("ADODB.Recordset");SQL命令的執行可以採用多種形式,下面我們一進行闡述。 (1)利用Connection對象的Execute方法執行SQL命令 Execute方法的原型如下所示: _
Time of Update: 2018-12-05
簡介長期以來,程式員們都使用 C 和 C++ 來開發 Windows GUI 應用程式。對於我們當中很多人來說,這一段曆史可以追溯到 Windows 2.0 時期,那時,我們使用基於 C 的 16 位 Windows API,即便只是顯示一個視窗,也需要編寫數十行代碼。幸運的是,隨著時間的推移,抽象的層級越來越高,越來越好。在 1992 年,Microsoft 發行了 Programmer's Workbench,其中包括 Microsoft 基礎類庫 1.0 版。Microsoft 基礎類庫
Time of Update: 2018-12-05
最佳化variant實現 上一次,我大概製作了一個variant類型,並設法賦予這個類型同C++內建類型幾乎一樣的行為。但是,具體實現起來,倒是有點望而生畏。想想看,如果我的variant需要包容5種類型,那麼單單一個操作符,就需要5×5+1=26個操作符重載(那單獨一個是variant類型運算元的重載)。所有二元操作符都是如此。
Time of Update: 2018-12-05
(2) 背景工作執行緒的任務執行流程for(;;) {// 檢查任務隊列是否有任務要運行if( !CheckTaskQueue() ) { // 隊列中沒有任務pPool->OnTaskIdle( this ); // 通知線程池,此線程已經空閑if( WaitForTask() ) continue;// 繼續迴圈elsereturn 0;// 終止線程} else { // 有任務需要運行pTask = GetTask(); // 取得新任務try {while(
Time of Update: 2018-12-05
寫一個XML檔案 TinyXML 是一個mini的C++ XML解析庫,它是非驗證的,它可以很容易的整合到其他的程式中.它解析一份XML doc,以此建立一個可以被讀、寫,儲存的DOM.它主要的類層次架構,函數原形詳細說明參看: http://www.grinninglizard.com/tinyxml/index.html// 以下以簡單的程式TinyXMLTest為例