C C 的零碎知識(七)

2021-09-24 11:58:56 字數 1736 閱讀 1769

2.關於控制代碼的問題

windows在建立乙個系統物件的同時,把乙個控制代碼賦值給這個實體 ,可以用這個控制代碼來識別或者修改這個物件, 這就是handle控制代碼的作用。

控制代碼(handle)是資源的標識。作業系統要管理和操作這些資源,都是通過控制代碼來找到對應的資源。按資源的型別,又可將控制代碼細分成圖示控制代碼(hicon),游標控制代碼(hcursor),視窗控制代碼(hwnd),應用程式例項控制代碼(hinstance)等等各種型別的控制代碼。

對於我現階段來說見到用到最多的就是檔案控制代碼,在檔案i/o中,要從乙個檔案讀取資料,應用程式首先要呼叫作業系統函式並傳送檔名,並選乙個到該檔案的路徑來開啟檔案。該函式取回乙個順序號,即檔案控制代碼(file handle),該檔案控制代碼對於開啟的檔案是唯一的識別依據。要從檔案中讀取一塊資料,應用程式需要呼叫函式readfile,並將檔案控制代碼在記憶體中的位址和要拷貝的位元組數傳送給作業系統。當完成任務後,再通過呼叫系統函式來關閉該檔案。總而言之,檔案控制代碼是乙個開啟檔案的唯一標識。

3.int main(int argc,char* ar**)

argc是命令列總的引數個數

ar**是argc個引數,其中第0個引數是程式的全名,以後的引數 命令列後面跟的使用者輸入的引數.

例如:

int   main(int   argc,   char*   ar**)  

執行時敲入

f:\mydocu~1\tempcode\d1\debug\d1.exe aaaa bbb ccc ddd

輸出如下:

f:\mydocu~1\tempcode\d1\debug\d1.exe

aaaa

bbbccc

dddchar *ar**是乙個字元陣列,其大小是int argc,主要用於命令列引數 ar** 引數,陣列裡每個元素代表乙個引數;

比如你輸入

test a.c b.c t.c

則argc = 4

ar**[0] = 「test」

ar**[1] = 「a.c」

ar**[2] = 「b.c」

ar**[3] = 「t.c」

argc記錄了使用者在執行程式的命令列中輸入的引數的個數。

arg指向的陣列中至少有乙個字元指標,即arg[0].他通常指向程式中的可執行檔案的檔名。在有些版本的編譯器中還包括程式檔案所在的路徑。

在呼叫乙個可執行程式時,某些情況下需要向程式傳遞引數。如我們可以在控制台中鍵入notepad.exe,

回車後將執行記事本程式。如果我們希望在開啟notepad時同時開啟乙個文字檔案,可以在notepad.exe

後面跟上檔案的路徑和名字,如notepad.exe example.txt(檔案在當前路徑)。

那麼程式中如何能得到這些輸入引數呢?這個工作是編譯器幫我們完成的,編譯器將輸入引數的資訊

放入main函式的引數列表中。

main函式的引數列表儲存了輸入引數的資訊,第乙個引數argc記錄了輸入引數的個數,

第二個引數是字串陣列的,字串陣列的每個單元是char*型別的,指向乙個c風格字串。

以notepad.exe example.txt為例

argc是2,就是說ar**陣列中有兩個有效單元

第一單元指向的字串是"notepad.exe"

第二單元指向的字串是"example.txt"

ar**陣列中的第乙個單元指向的字串總是可執行程式的名字,以後的單元指向的字串依次是程式呼叫時的引數。

這個賦值過程是編譯器完成的,我們只需要讀出資料就可以了。

C C 零碎知識點

總是看到很多零碎的知識點,想記下來又不知道該放在 不記的話又不知道在 去找,尷尬。ps 不要盲目相信答案哦。知識太雜,以後有空再分類吧 1.當派生類中不含物件成員時 在建立派生類物件時,建構函式的執行順序是 基類的建構函式 派生類的建構函式 在撤消派生類物件時,析構函式的執行順序是 派生類的建構函式...

零碎知識C

c 中 dec,hex,oct,fixed,scientific,left,right,ws,setfill,setw,setprecision,eof,get,getline都是什麼意思 dec是十進位制 如cout這些是格式控制符 在使用時要加標頭檔案 include fixed是固定的意思 p...

JavaBean零碎知識

上面等價於下列操作 1.從scope session 中獲取id customer 屬性值,賦值給class com.stuipid.bean.customer 型別的id customer 變數 customer customer customer session.getattribute cus...