1 / 27

# 陣列 - PowerPoint PPT Presentation

7. 陣列. 向量 (vector) 就是典型的一維陣列，而更高維的矩陣，例如矩陣 (matrix) 和張量 (tensor) 則分別是二維和三維的陣列。. 陣列. 7.1 　一維陣列 7.2 　將陣列當成函數的參數 7.3 　二維陣列 7.4 　將二維陣列當成函數的參數. 一維陣列. double Temperature [600]; int Record [52]; char Name [15]; 我們常把陣列長度以整數常數 (const int) 的型式另外宣告： const int RecordSize = 600;

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about ' 陣列 ' - quanda

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### 陣列

• 7.1　一維陣列

• 7.2　將陣列當成函數的參數

• 7.3　二維陣列

• 7.4　將二維陣列當成函數的參數

double Temperature [600];

int Record [52];

char Name [15];

• 我們常把陣列長度以整數常數 (const int) 的型式另外宣告：

const int RecordSize = 600;

double Temp [RecordSize];

• 注意上述陣列長度必需為const int，不能是int，因為陣列長度在編譯時必需確定。

double Temp[5] = {48.4, 39.8, 40.5, 42.6, 41.2};

int Scope[] = {82, 78, 62, 69};

char Name[] = {'L','u','l','u'};

const int Size = 5;

double Pressure[Size];

P[0] = 3.2;

P[3] = P[0]*2.0;

const int Size = 5;

double Average, Sum = 0;

for (int i = 0; i < Size; i++)

Sum += P[i];

Average = Sum / double(Size);

double Max;

Max = P[0];

for (int i = 1; i < Size; i++ )

if (Max < P[i]) Max = P[i];

cout << Average(P, Size) << endl;

cout << MaxElem(P, Size) << endl;

• 其中Size為先前宣告過的const int，代表陣列的長度。

• 函數的原型則寫成：

double Average(double [], int);

double MaxElem(double [], int);

• 相當於是傳位址 (pass by address，或稱為call by address，「以位址呼叫」的意思)，而不是傳值 (pass by value)，在函數中對陣列的任何更動都直接作用在原陣列上。

• 它所產生的是以下的固定數列：

1 1 2 3 5 8 13 21 .................

• 亦稱為矩陣 (matrix) 或是表 (table)。例如

• 在C++ 中宣告成：

double M[2][3];

• 如果加上初始化數據，則可以寫做：

double M[2][3] = { {1.8, 4.9, 6.8},{6.2, 2.1, 3.4}};

double M[2][3] = { 1.8, 4.9, 6.8,6.2, 2.1, 3.4};

double M[][3] = { 1.8, 4.9, 6.8, 6.2, 2.1, 3.4};

• 在電腦內部這些資料是以「列」的次序儲存：

• 對於一個m×n大小的矩陣M而言，M[i][j] 所在的位址相當於從 M[0][0] 算起，偏移量 (offset) 為

(i × n + j ) 個單位

的地方。

const int Row = 2;

const int Col = 3;

double A[Row][Col];

• 給定初始值後，可以使用下列迴圈計算其平均值：

double Sum = 0, Average;

for (int i = 0; i < Row; i++)

for (int j = 0; j < Col; j++)

Sum += A[i][j];

Average = Sum / double(Row*Col);

• 外圍迴圈是以逐列 (row) 的次序運作，而內圈以逐行 (column) 的次序演算。

• 例如，函數的原型 (prototype) 是

double MatrixAvg(double [ ][Col]);

或是

double MatrixAvg(double A[ ][Col]);

而函數的呼叫則使用下列敘述：

cout << MatrixAvg(A);

• 對於一個m×n×p大小的張量T而言，元素T[i][j][k]所在的位址相當於從T[0][0][0]算起，偏移量 (offset) 為

(i × n × p + j × p + k ) 個單位的地方。