初始化
外表
初始化(粵拼:co1 ci2 faa3 )係電腦編程上嘅程序,講緊為一眾要用嘅變數設定佢哋嘅初始數值;呢個過程可以喺個程式做編譯嗰陣做,又可以喺執行期[註 1]嗰時做,而程式碼中負責做初始化嗰橛就係所謂嘅初始化碼。喺物件導向編程中,初始碼包括將要用嘅物件定義好,仲有係建構出個別物件。
喺實際嘅程式編寫,好多程式語言都會有特定嘅建構用嚟做初始化,而呢啲建構就係所謂嘅初始化器[註 2]或者初始化列表[註 3],但詳細嘅初始化程序可能依程式語言或者初始化緊嘅物件種類而有所不同。
初始化嘅相對係最終化。
例子碼
[編輯]喺多數嘅高階程式語言當中,個程式頭嗰若干行多數都係用嚟做初始化嘅;初始化通常涉及若干行嘅碼,每行都用等如號 = 嚟將柞變數同物件設起初始嘅數值(喺多數高階程式語言裏面,x = y 表達嘅係將 x 呢個變數設做 y 呢個數值)。以下係多種常用程式語言裏面做嘅初始化,定義一啲程式跟住落嚟用嘅變數、排列、同物件等[1]:
C 係種編譯語言,而整數[註 4]、浮點數陣列、整數陣列同整數 struct 都係靜態結構;如果下面嘅碼喺子程式出現,初始化會要喺執行期做;如果唔係,就通常係編譯嗰陣而經做咗初始化。
/* variables */ int a = 2; int b; b = 20; char string1 = 'a'; char string2 = 'f'; /* arrays and matrices */ float mark[5] = {19, 10, 8, 17, 9}; int markagain[3][4] = { {0, 1, 2, 3} , /* initializers for row indexed by 0 */ {4, 5, 6, 7} , /* initializers for row indexed by 1 */ {8, 9, 10, 11} /* initializers for row indexed by 2 */ }; /* structs */ struct point {int x; int y;}; struct point p = {1, 3};
- C++
// variables int a, b; int result = 10; a = 5; b = 2; // arrays and matrices int i[] = { 10, 20, 30 }; int j [3][4] = { {0, 1, 2, 3} , // initializers for row indexed by 0 {4, 5, 6, 7} , // initializers for row indexed by 1 {8, 9, 10, 11} // initializers for row indexed by 2 }; // structs struct point {int x; int y;}; struct point p = {1, 3};
Python 係種直譯語言,所以無論乜嘢都係喺執行期做,包括初始化都係。
# variables result = 10 a = 5 b = 2 # arrays and matrices i = [1, 2, 3] j = [[0 for x in range(5)] for y in range(5)] # a 5 x 5 matrix, all elements being 0. # structs class stru: def __init__(self): self.x = 0 self.y = 0 s = stru() s.x = 10
- MATLAB
% variables result = 10; a = 5; b = 2; % arrays and matrices i = zeros(5,1); # a 5-item array, all elements being 0. j = zeros(5,5); # a 5 x 5 matrix, all elements being 0. % structs s.x = 1; s.y = {'A','B','C'};
Processing 其實即係 Java,而整數同整數陣列都係靜態結構;因為 Java 理論上係種編譯語言,情況同上面 C 嘅例子一樣。
// variables int a = 100; int b = 100; // arrays and matrices int[] i = new int[3]; int[][] j = { {0, 1, 2, 3}, {3, 2, 1, 0}, {3, 5, 6, 1}, {3, 8, 3, 4} };
睇埋
[編輯]參考
[編輯]
- A.K. Hartmann, Practical Guide to Computer Simulations, Singapore: World Scientific (2009).
註釋
[編輯]引咗
[編輯]- ↑ C++ FAQs, by Cline, Lomow, and Girou, Addison-Wesley, 1999.