- Taipei, Taiwan
-
C語言 - 第三十章 | 函式進階議題 - 函式指標
函式指標 程式在執行時,函式本身在記憶體中也佔有一個空間,而函式名稱本身也就是指向該空間位址的參考名稱,當呼叫函式名稱時,程式就會去執行該函式名稱所指向的記憶體空間中之指令。 1 傳回值型態 (*指標名稱)(傳遞參數); 一個函式型態由傳回值型態與...
-
C語言 - 第二十九章 | 函式進階議題 - 不定長度引數(Variable-length argument)
不定長度引數( Variable-length argument ) 在定義函式時,有時無法事先得知要傳遞的參數個數,這邊介紹不定長度引數( Variable-length argument )的使用,為了要使用不定長度引數,必須包含 stdarg.h 標頭檔案。 1 ...
-
C語言 - 第二十八章 | 函式進階議題 - 遞迴(Recursion)
遞迴( Recursion ) 遞迴( Recursion )是在函式中呼叫自身同名函式,而呼叫者本身會先被置入記憶體堆壘中,等到被呼叫者執行完畢之後,再從堆壘中取出之前被置入的函式繼續執行。堆疊( Stack )是一種「先進後出」的資料結構,就好比你將書本置入箱中,最先放入的書會最後才取出...
-
C語言 - 第二十七章 | 函式入門 - 變數、函式可視範圍(static 與 extern)
C 中,談到可視範圍( scope )可分為許多層次,也可以談到很複雜。 全域變數( Global variable ) 區域變數( Local variable ) 區塊變數( Block variable ) 全域變數( Global variable ) 全域...
-
C語言 - 第二十六章 | 函式入門 - 行內函式
行內函式 內聯函式是一種編譯最佳化的方式。 對於一些內容較為簡短又常使用的函式,編譯器在程式設計師的建議(使用關鍵字 inline )下,可以將指定的函式插入並取代每一處呼叫該函式的地方,從而減少呼叫函式耗費的時間。 參考例子 C語言 - 第二十四章 | 函式入門 - 函式簡介 ...
-
C語言 - 第二十五章 | 函式入門 - 引數傳遞、傳回值
引數傳遞 引數傳遞時的傳值就是傳送(變數)值給函式上對應的參數,值被複製一份給參數,傳遞者與接受者兩個變數彼此各佔有一個記憶體,互不相干。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
-
C語言 - 第二十四章 | 函式入門 - 函式簡介
前置作業 因為會寫另外寫 *.h 標頭檔,所以新增項目,選擇「標頭檔 (.h)」,命名為 math.h 。 什麼是函式( Function )? 到目前為止都只使用一個函式( Function ),也就是 main() 主函式,將所有的程式寫在主函式中只適合一些小程式,如果程式比較...
-
C語言 - 第二十三章 | 指標 - 命令列引數
程式在執行時,可以附加一些引數以指定執行不同的功能。 1 copy -r ./temp ./tmp 其中 copy 是程式名稱,而 -r 、 ./temp 、 ./tmp 都是在程式執行時附加給程式的一些引數,這種程式執行方式在以文字畫面為主的程式中相當...
-
C語言 - 第二十二章 | 指標 - 指標與字串
字元指標可以參考至一個字串常數,這使得字串的指定相當的方便,例如下面的程式片段宣告一個字串指標,並指向一個字串常數。 1 char *str = "hello" ; 使用字元指標的好處是,你可以直接使用指定運算子將一個字串常數指定給字元指標。 ...
-
C語言 - 第二十一章 | 指標 - 指標的指標
指標的指標( the pointer to the pointer ),其作用為「間接參照」,但無論是哪一個名詞,都是令人困惑的,其實指標就是指標,它們的作用單純來說,都是用以儲存記憶體位址。 思考一個問題,要取得 int 變數的記憶體位址時,會使用 int* 來宣告指標,要取得 double...