Time of Update: 2018-12-05
C++ 語言中常數即為常量,如 int a=5; 5即為常量。那麼常量存在於哪呢?是否佔用記憶體呢?#include <iostream.h>int a;main(void){ a=10; cout<<a<<endl; cout<<&a<<endl; cout<<&10<<endl; //Invalid return 0;} 以上為VC6.0
Time of Update: 2018-12-05
最近在工作當中遇到了一點小問題,關於C語言標頭檔的應用問題,主要還是關於全域變數的定義和聲明問題.學習C語言已經有好幾年了,工作使用也近半年了,但是對於這部分的東西的確還沒有深入的思考過.概念上還是比較模糊的,只是之前的使用大多比較簡單,並沒有牽涉到太複雜的工程,所以定義和聲明還是比較簡單而明了了的.但是最近的大工程讓我在這方面吃到了一點點苦頭,雖然看了別人的代碼能夠很快的改正,但是這些改正背後的原因卻不知道.我想大多數喜歡C語言的程式員應該是和我一樣的,總喜歡去追究程式問題背後的底層原因,而這
Time of Update: 2018-12-05
註:不是原創,課堂上聽來的,防止遺忘,所以記下來! C語言的體繫結構分為兩個部分:資料和函數,當然最終這兩個部分都是要進入到電腦的記憶體中去。 函數在編譯後編程可執行代碼,存放在代碼區;資料分為幾種:局部與全域,auto和static,簡單的說就是放在待用資料區,堆中和棧中。 對於全域的變數和靜態變數是在main函數之前建立的。 C語言有個規定:全域區不能有可執行代碼 ,可執行代碼必須進入函數中。但是C語言中的函數都是全域的,這就導致函數不能嵌套定義:嵌套定義導致函數內部定義的函數成
Time of Update: 2018-12-05
[原創]關於C語言中函數調用和參數傳遞機制的探討關於C語言中函數調用和參數傳遞機制的探討函數,相信許多人也知道其重要性;一個檔案往往由一個或者多個函數構成的。然而可能許多人還不知道函數調用的一些深層問題,所以我寫的這篇文章一來是應了一個好朋友的要求而寫,二來希望一些朋友能夠從我這篇文章瞭解函數調用的機制。但是並不是每個人都可以完全讀懂這文章,想完全讀懂此文,我想必須具備三個條件:一、對於C語言有一定的瞭解,最起碼有一個整體的初步瞭解;二、能夠讀懂UNIX/LINUX下的AT&T文法的彙編;AT&
Time of Update: 2018-12-05
有這麼一段C程式: View Code最終程式的結果大家很容易都能猜到,但是其中還有一點很有用的知識:0xFE是一個常量,最終翻譯成組合語言的時候是立即數,存放到寄存器中。這就說明這個常量佔用一個字長,不足一個字長的高位最終被擴充為0. 依據這個原理我們可以寫出不依賴具體機器的掩碼程式。 1 #include <stdio.h> 2 3 int main() 4 { 5 char hex1 = 0xFE; 6 int hex2 = 0xFEFE; 7 8
Time of Update: 2018-12-05
首先看一段程式:View Code 1 #include "stdio.h" 2 3 int main(void) 4 { 5 if ( 1 > 2) 6 { 7 printf("1 > 2 \n"); 8 } 9 10 if (-1 > 2u)11 {12 printf("-1 > 2u \n");13 }14 15 if (-1 > 0u)16 {17
Time of Update: 2018-12-05
事件聲明通常省略事件訪問器聲明,例如Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public delegate void MouseEventHandler();public event MouseEventHandler MouseDown ;但會有一些特殊情況,例如,為每個事件設定一個欄位所造成的記憶體開銷,有時會變得不可接受。在這種情況下,
Time of Update: 2018-12-05
這一章主要就是一個大體的介紹。有幾個概念需要注意下。1:CTS: Common Tpye System 一般型別系統..Net平台有多種語言,比如用VB.NET 寫了一個類,然後C#需要繼承這個類,這裡就涉及到了不同語言對於資料類型的定義。eg,VB寫的這個類,返回了Integer,這是VB裡的關鍵字,而C#裡顯然沒有這個東西,咋辦?幸好,CTS裡定義了一個 System.Int32,。這樣說吧,VB的 Integer映射到了這個 System.Int32,而C#裡的 int 也是映射到了
Time of Update: 2018-12-05
C#靜態方法使用經驗主要向你介紹了在使用C#靜態方法的過程中遇到的一點實際的問題,以及C#靜態方法使用的體會內容。 C#靜態方法有什麼弊端? 我們在實際的開發過程中會注意到C#靜態方法對於我們程式的影響,那麼有哪些C#靜態方法使用的體會呢?這裡我們來看看一些方面: C#靜態方法使用中遇到的問題: 在源碼工程中幾乎沒有看到什麼靜態方法,但是在Ms的SQLHelper中幾乎全部使用的是靜態方法,為什麼會這樣呢?我們來看看有以下的幾種可能:
Time of Update: 2018-12-05
通知區域中的表徵圖是一些進程的捷徑,這些進程在電腦後台運行,如防毒程式或音量控制。這些進程不會具有自己的使用者介面。NotifyIcon 類提供了編寫此功能的方法。Icon屬性定義顯示在通知區域中的表徵圖。表徵圖的快顯功能表由 ContextMenu屬性確定。Text屬性分配工具提示文本。要在通知區域中顯示表徵圖,必須將 Visible屬性設定為
Time of Update: 2018-12-05
C#靜態方法的學習不能僅僅是概念字面上的領會,更是實際操作的理解,那麼這裡向你介紹的正是C#靜態方法的應用執行個體。 C#靜態方法是一種特殊的成員方法,它不屬於類的某一個具體的執行個體。非靜態方法可以訪問類中的任何成員,而靜態只能訪問類中的靜態成員。那麼對於C#靜態方法的這種特性我們是如何把握的呢?讓我們來看看一個簡單的C#靜態方法應用執行個體: C#靜態方法執行個體示範: class A { int x; static int y; static int F(){ x=
Time of Update: 2018-12-05
Time of Update: 2018-12-05
需要明確一下C#程式(或者說.NET)中的資源。簡單的說來,C#中的每一個類型都代表一種資源,而資源又分為兩類:託管資源:由CLR管理分配和釋放的資源,即由CLR裡new出來的對象;非託管資源:不受CLR管理的對象,windows核心對象,如檔案、資料庫連接、通訊端、COM對象等;毫無例外地,如果我們的類型使用到了非託管資源,或者需要顯式釋放的託管資源,那麼,就需要讓類型繼承介面IDisposable。這相當於是告訴調用者,該類型是需要顯式釋放資源的,你需要調用我的Dispose方法。不過,這一
Time of Update: 2018-12-05
C#靜態方法與非靜態方法的區別不僅僅是概念上的,那麼他們有什麼具體的區別呢?讓我們通過本文向你做一下解析。 C#的類中可以包含兩種方法:C#靜態方法與非靜態方法。那麼他們的定義有什麼不同呢?他們在使用上會有什麼不同呢?讓我們來看看最直觀的差別:使用了static 修飾符的方法為靜態方法,反之則是非靜態方法。 下面我們分四個方面來看看C#靜態方法與非靜態方法的差異: C#靜態方法與非靜態方法比較一、C#靜態成員: ①靜態成員屬於類所有,非靜態成員屬於類的執行個體所有。
Time of Update: 2018-12-05
MSDN建議按照下面的模式實現IDisposable介面:public class Foo : IDisposable{public void Dispose() { Dispose(true); GC.SuppressFinalize(this); }protected virtual void Dispose(bool disposing) {if (!m_disposed) {if (disposing) {
Time of Update: 2018-12-05
C#靜態方法是什麼呢?C#靜態方法在我們實際的開發應用中是什麼作用呢?那麼這裡就向你簡單介紹C#靜態方法的概念以及一些注意事項。 C#靜態方法是什麼呢?在我們編程開發的應用中C#靜態方法可以說是時時刻刻都在發揮著作用,那麼C#靜態方法的概念和注意事項是什麼呢?讓我們在這裡詳細給你介紹: C#靜態方法的1個特別作用就是不用建立類的對象,而直接用類裡面的方法(public static 2個條件), C#靜態方法樣本: class A { public static void b() {...
Time of Update: 2018-12-05
首先介紹一下C++中的結構。對於一個結構來說,struct MyStruct { int member_a;};如果有個變數MyStruct s,那麼使用其中的成員元素時可以用 s.member_a = 1;如果採用指標方法訪問,比如MyStruct * ps,那麼同樣的訪問必須用箭頭號:ps->member_a = 1;::只用在類成員函數和類成員變數中。比如,聲明一個類:class CA { public: int ca_var; int add(int a,
Time of Update: 2018-12-05
先要理解class的意思。class應該理解為一種類型,象 int,char一樣,是使用者自訂的類型。雖然比int char這樣build-in類型複雜的多,但首先要理解它們一樣是類型。用這個類型可以來聲明一個變數,比如int x, myclass my等等。這樣就像變數x具有int類型一樣,變數my具有myclass類型。理解了這個,就好解釋this了,my裡的this 就是指向my的指標。如果還有一個變數myclass mz,mz的this就是指向mz的指標。 這樣就很容易理解this
Time of Update: 2018-12-05
對於眾多人提出的c/c++中指標難學的問題做個總結: 指標學習不好關鍵是概念不清造成的,說的簡單點就是書沒有認真看,指針的學習猶如人在學習饒口令不多看多學多練是不行的,下面是兩個很經典的例子,很多書上都有,對於學習的重點在於理解*x和x的理解,他們並不相同,*x所表示的其實就是變數a本身,x表示的是變數a在記憶體中的地址,如果想明白可以輸出觀察cout<<*x"|"x;,當定義了int*x;後對x=&a的理解的問題。仔細閱讀和聯絡下面的兩個例子我想指標問題就不是痛點了!#
Time of Update: 2018-12-05
在C++、Java等眾多OOP語言裡都可以看到virtual的身影,而C#作為一個完全物件導向的語言當然也不例外。虛擬函數從C#的程式編譯的角度來看,它和其它一般的函數有什麼區別呢?一般函數在編譯時間就靜態地編譯到了執行檔案中,其相對位址在程式運行期間是不發生變化的,也就是寫死了的!而虛函數在編譯期間是不被靜態編譯的,它的相對位址是不確定的,它會根據運行時期對象執行個體來動態判斷要調用的函數,其中那個申明時定義的類叫申明類,那個執行時執行個體化的類叫執行個體類。如:飛禽 bird = new