Time of Update: 2018-12-04
C++ 引入了 const_cast,reinterpret_cast 之類的新的顯式類型轉換方式,不僅大多數 C程式員覺得不是很習慣,就連某些有經驗的C++程式員都會在一些細節上犯錯。誠然,既然我們可以簡單的寫出:int i = (int)p;// p is apointer這樣的顯式轉換,為什麼還要使用int i =reinterpret_cast<int>( p );這麼複雜的形式呢?這篇文章的目的是簡單介紹C++ 的類型轉換系統,並對使用和擴充進行一些討論。C++ 引入了
Time of Update: 2018-12-04
在Linux中建立靜態庫和動態庫範例 (hello.c)0人收藏此文章,我要收藏發表於2年前 , 已有440次閱讀
Time of Update: 2018-12-04
所謂托盤程式顧名思義就是象托起的盤子一樣的程式。而所謂的托起的盤子就是程式運行中顯示出的表徵圖,而托起的位置就是視窗系統的的工具列了。托盤程式具有直觀、佔用螢幕空間較小並且可以為它定義多個功能菜單,這就給操作者帶來了方便,所以越來越多的程式設計者都把程式設計成托盤這種方式。我們已經看過了用其他語言設計托盤程式的例子,其中的大部分,整個設計過程還是相對煩瑣的。而對於微軟公司極力推薦的下一代程式開發語言--Visual C#來說,卻可以十分方便設計出一個托盤程式。本文就是介紹Visual
Time of Update: 2018-12-04
一、虛函數的工作原理 每當建立一個包含有虛函數的類或從包含有虛函數的類派生一個類時,編譯器就會為這個類建立一個虛函數表(VTABLE)儲存該類所有虛函數的地址,其實這個VTABLE的作用就是儲存自己類中所有虛函數的地址,可以把VTABLE形象地看成一個函數指標數組,這個數組的每個元素存放的就是虛函數的地址。在每個帶有虛函數的類 中,編譯器秘密地置入一指標,稱為v p o i n t e r(縮寫為V P T R),指向這個對象的V TA B L E。
Time of Update: 2018-12-04
goto只能在函數體內跳轉,不能跳到函數體外的函數。即goto有局部範圍,需要在同一個棧內。需要在要跳轉到的程式段起始點加上標號。如下例中的part2。1.goto 語句可用於跳出深嵌套迴圈#include<iostream>using namespace std;int main(){for(int i=0;i<10;i++) for(int j=0;j<10;j++) for(int k=0;k<10;k++) {
Time of Update: 2018-12-04
錯誤認識1:若程式員沒有自己定義無參數的建構函式,那麼編譯器會自動產生預設建構函式,來進行對成員函數的初始化。錯誤認識2:編譯器合成出來的default constructor會明確設定'“class內每一個data
Time of Update: 2018-12-04
對於SOCKET在這裡我不想究其曆史,我只想說其時它是一種進程通訊的方式,簡言之就是調用這個網路程式庫的一些API函數就能實現分布在不同主機的相關進程之間的資料交換. SOCKET中首先我們要理解如下幾個定義概念: 一是IP地址:IP
Time of Update: 2018-12-04
在文章開始之前,首先指出對於c++新手的兩個常見的誤解: 一、任何class如果沒有定義default constructor,就會被合成出一個來。 二、編譯器合成出來的default constructor會明確設定'“class內每一個data member的預設值” 首先我們來討論第一個誤解。編譯器並不是給任何一個沒有user-declared constructor的class合成出default constructor,編譯器只會在需要的時候才會給沒有user-
Time of Update: 2018-12-04
程式一般分為Debug 版本和Release 版本,Debug 版本用於內部調試,Release 版本發行給使用者使用。斷言assert 是僅在Debug 版本起作用的宏,它用於檢查“不應該”發生的情況。樣本6-5 是一個記憶體複製函數。在運行過程中,如果assert 的參數為假,那麼程式就會中止(一般地還會出現提示對話,說明在什麼地方引發了assert)。void *memcpy(void *pvTo, const void *pvFrom, size_t size){ assert((
Time of Update: 2018-12-04
1、枚舉enum的用途淺例 寫程式時,我們常常需要為某個對象關聯一組可選alternative屬性.例如,學生的成績分A,B,C,D等,天氣分sunny, cloudy, rainy等等。 更常見的,開啟一個檔案可能有三種狀態:input, output和append. 典型做法是,對應定義3個常數,即: const int input = 1; const int output = 2; const int append =
Time of Update: 2018-12-04
關於強制類型轉換的問題,很多書都討論過,寫的最詳細的是C++ 之父的《C++ 的設計和演化》。最好的解決方案就是不要使用C風格的強制類型轉換,而是使用標準C++的類型轉換符:static_cast, dynamic_cast。標準C++中有四個類型轉換符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面對它們一一進行介紹。static_cast用法:static_cast < type-id > (
Time of Update: 2018-12-04
由於程式運行時佔用的記憶體過大,所以想辦法給程式瘦身。在調試中發現結構體佔用的size竟然和預想的不一樣,原來……看看下面講的吧,肯定會不枉此看哦!1,比如:struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B;sizeof(A)=6,
Time of Update: 2018-12-04
#include<stdio.h>#include<malloc.h>#include<stdlib.h>typedef struct Node{int data;struct Node * pNext;}NODE,* PNODE;typedef struct Stack{PNODE pTop;PNODE pBottom;}STACK,* PSTACK;void init(PSTACK);void pop(PSTACK ps, int *pval);bool
Time of Update: 2018-12-04
學了stm32的nvic,中斷嵌套,拿來與大家分享分享!因為stm32有43個中斷源,當同時用到多個中斷時,就要指定其中斷的優先順序了。 nvic即是中斷向量的控制!由SCB->AIRCR寄存器控制,SCB->AIRCR中目前只用到4位,也就是最高能有16級中斷嵌套,如果全使用的話可以達到256級
Time of Update: 2018-12-04
c語言的申明的總結:這周複習了一下c語言,下面是一些學習心得首先是申明:比如:extern char *( *hander)(int a);那麼這個申明該怎麼理解呢?A 申明按照它的名字開始讀取,然後按照優先順序順序讀取。B B1.括弧 B2:尾碼操作符:包括()和[],()表示函數,[]表示數組C 首碼操作符,*表示指向...的指標D 有時含有const 關鍵字或valatile關鍵字拿上面的例子來說吧,首先是hander這是名字,然後是括弧(*hander),它表示的是一個指標,
Time of Update: 2018-12-04
1.指標函數的定義 顧名思義,指標函數即返回指標的函數。其一般定義形式如下: 類型名*函數名(函數參數表列); 其中,尾碼運算子括弧“()”表示這是一個函數,其首碼運算子星號“*”表示此函數為指標型函數,其函數值為指標,即它帶回來的值的類型為指標,當調用這個函數後,將得到一個“指向傳回值為…的指標(地址),“類型名”表示函數返回的指標指向的類型”。 “(函數參數表列)”中的括弧為函數調用運算子,在調用語句中,即使函數不帶參數,其參數表的一對括弧也不能省略。其樣本如下:
Time of Update: 2018-12-04
感謝下面兩篇文章的作者,從第一個例子再看第二個,很清晰!代碼略有改動,只是為自己以後看起來方便,請見諒!原文1:http://blog.csdn.net/dylgsy/article/details/876323原文2:http://www.cnblogs.com/bastard/archive/2012/02/02/2336150.html 例子1:// 定義基本介面類,設計模式的通用手法了class CChildComponent{public: // 小孩吃飯 virtual
Time of Update: 2018-12-04
這兩天要用qt做一個介面,但主體功能用要用c語言實現,於是,把c語言的代碼產生動態庫,在Qt裡動態載入該庫,拿出來大家分享分享!,下面是我的QT源碼!main.h檔案1 #ifndef MAIN_WINDOW 2 #define MAIN_WINDOW 3 #include<QtGui> 4 #include<QTextEdit> 5 6 using namespace std; 7 QString s2q(const string &s);
Time of Update: 2018-12-04
1. 建立一個項目,或者從選擇當前解決方案--右鍵-添加--建立項目 2. 選擇(項目類型)Visual C#項目,(模板)Windows 服務,填寫要建立的服務名稱(修改預設的WindowService1成為你自己的服務名稱),然後按確定按鈕. 3. 資源管理員中預設建立一個WindowsService1的項目,項目下包括一個Service1.cs檔案 4. 左側選擇"工具箱"--"組件",拖動一個Timer對象到Service1.cs
Time of Update: 2018-12-04