上一篇:C語言解譯器的實現--詞法分析(二)1.類型的表示 C語言的類型是相當靈活的,除了標準的類型(int char float double long 等等)外,自己根據需求,能定義出無窮的類型。一個具體的例子: int * a[10]; 它表示的意思是: a is ARRAY 0..9 of POINTER to INT
說起來很有意思,自認為對C語言理解得還是比較深刻的。但居然到今天才知道有個strtok函數,試用了一下突然感慨以前做了多少重複勞動。每次需要解析設定檔,每次需要分割字串,居然都是自己去分割字串,既累人又容易出錯。感概繼續學得不夠全面啊!這裡引用一段strtok用法:The strtok() function returns a pointer to the next "token" in str1, where str2 contains the delimiters that
目錄:1.指令碼的執行要素2.棧的類比.3.變數在棧中的地址計算4.函數的調用過程5.命令的解析6.C的庫函數調用 在前面的文章中,我主要講解了語言的解析部分,最終我們生產了指令碼的中間代碼。接下來,將是一個最困難的時刻,怎麼解析執行中間代碼! 執行代碼其實是經過一定處理後的中間代碼的另外一種表示。正如前面提到的,我們的中間代碼是三元組的形式,比如:c = a + b * c; 可以表示成 @1 = b * c; @2 = a + @1; @3 = c =
const是常量,readonly是唯讀,“部落格園er”都知道:)那麼他們的區別是什麼那?個人總結如下:一、賦值1)const修飾的變數在定義時必須賦初值,其他位置不容許改變變數值;2)readonly修飾的變數可以在定義時賦值也可以在建構函式中賦值,其他位置不容許改變變數值。二、調用1)const修飾的變數需要用類名來調用如同static成員一樣。2)readonly修飾的變數需要用對象來調用。三、代碼例:public class ConstReadOnly {
靜態建構函式,這個東東大家用的較少吧。靜態建構函式還是很有趣的,一下是它的特點:1)在執行建構函式時會先執行靜態建構函式。2)調用類的靜態成員時會先執行靜態建構函式。3)靜態建構函式只執行一次。(無論再建立對象還是調用類的靜態成員)以下是包含靜態建構函式的類。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public class Test{
Interface和abstract classOOP必談面向“介面”編程,此介面並非僅指“Interface”,它包括“介面”和“抽象類別”。OOP中的原則很多,什麼SRP,OCP,DIP,ISP,LSP。而“介面”和“抽象類別”又與DIP(依賴倒置原則)密切相關。DIP強調的是依賴抽象不依賴實際,這樣可以降低系統的耦合性。舉個簡單的例子:Man man = new
C#常量主要分為兩種:編譯時間和運行時常量編譯時間常量用關鍵字const來定義,運行時常量用關鍵字readonly來定義兩者區別: 編譯時間常量,在編譯時間便用該常量的值代替常量變數。 運行時常量,在運行時返回一個運行時常量的變數引用這兩種變數引用方式會導致什麼不同呢,且看下面代碼: 引用Effective C#中的例子:定義一個類庫Limitation,其中呢定義了一個類Limitations,代碼如下: Code highlighting produced by
補充上一篇文章對於運行時常量,只能在初始化時賦值,或者是建構函式中複製。而不能在其他地方賦值,否則會提示錯誤。還是用上篇的例子,在Limitations中我定義了兩個常量,但是對運行時常量沒有賦值, Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> public class Limitations {public static
多維陣列並不常用,我覺得倒不如用xml還好 代碼Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->class ArrayTest { public void TestArray(){ //寫法一: //String[, ,] items = new String[,,]