or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
(´>∀)人(´・ω・)ノヽ(・ε・*)人(-д-`)
Ruby @Sprout 2022
(´>∀)人(´・ω・)ノ日主ヽ(・ε・*)人(-д-`)
Ruby @Sprout 2022
(´>∀)人(´・ω・)ノ今日主題ヽ(・ε・*)人(-д-`)
Ruby @Sprout 2022
人(´・ω・)ノ 今日主題 ヽ(・ε・*)人
Ruby @Sprout 2022
ω・)ノ 今日主題 ヽ(・ε
Ruby @Sprout 2022
)ノ 今日主題 ヽ(
Ruby @Sprout 2022
今日主題
Ruby @Sprout 2022
陣列 Array
Ruby @Sprout 2022
Outline
什麼是陣列?
為什麼需要陣列?
陣列在 C/C++ 中的語法
陣列的常見使用情境
陣列在記憶體中的特性
陣列在 C/C++ 中的本質
Before we start…
Review
流程控制 Flow Control
「條件判斷」&「迴圈」
Conditionals & Loops
條件判斷
if
if / else
if / else if
if / else if / else
Example code
迴圈
for
while
do-while
For Loops
for (初始化; 條件; 操作) { 敘述 }
While Loops & Do-while Loops
什麼是陣列?
為什麼需要陣列?
陣列在 C/C++ 中的語法
陣列的常見使用情境
陣列在記憶體中的特性
陣列在 C/C++ 中的本質
\(\text{什麼是陣列?}\)
一般變數
只能有「一個」值 (Value)
陣列
可有「多個」被區隔開的抽屜,各有一值
Any questions?
什麼是陣列?
為什麼需要陣列?
陣列在 C/C++ 中的語法
陣列的常見使用情境
陣列在記憶體中的特性
陣列在 C/C++ 中的本質
範例題目一
小菜一碟,沒什麼問題,對吧?
範例題目二
感覺還可以?
範例題目三
This is why we need "Array".
Any questions?
什麼是陣列?
為什麼需要陣列?
陣列在 C/C++ 中的語法
陣列的常見使用情境
陣列在記憶體中的特性
陣列在 C/C++ 中的本質
宣告 Declaration
元素型態 變數名稱[長度];
Example code
Visualization
賦值 Assignment
Visualization
初始化 Initialization
元素型態 變數名稱[(長度)] = {(內容)};
存取元素 Indexing
Example code
變數名稱[索引值];
Visualization
範例題目三
Example code
老師你騙我,根本就沒有比較快啊!!!
如何有效率地存取陣列元素?
回想上堂課,有什麼可以幫我們完成重複性工作?
Anyone?
流程控制 Control Flow
More specifically,

迴圈 Loops
Example Code
Visualization
結合上節課所學「迴圈」,陣列將是強大工具!
Much better!
範例題目四
你可能遇到以下問題…
宣告的注意事項
陣列長度必須是「常數 Constant」
正確示範
錯誤示範
範例題目四
Example code
初始化注意事項
初始化時,給定陣列長度卻未給齊元素,預設為 0
Example code
Visualization
未初始化之陣列,其元素為殘值
Try it yourself
Any questions?
什麼是陣列?
為什麼需要陣列?
陣列在 C/C++ 中的語法
陣列的常見使用情境
陣列在記憶體中的特性
陣列在 C/C++ 中的本質
陣列的常見使用情境
需儲存多個性質相同且型別相同之資料時
注意事項
確認「必要」儲存資料才使用陣列
常見誤用範例
Sprout OJ No. 803
解題策略
變異數公式一
\[{1\over n}\sum\limits_{i=0}^{n}{(x_i-\mu_x)^2}\]
感覺一定要用到陣列…嗎?
變異數公式二
\[\sum\limits_{i=0}^{n}{{x_i}^2\over n}-{\mu_x}^2\]
Any questions?
插播:課堂練習
小蘋果
Sprout OJ No.602
σ.σ
Sprout OJ No.209
什麼是陣列?
為什麼需要陣列?
陣列在 C/C++ 中的語法
陣列的常見使用情境
陣列在記憶體中的特性
陣列在 C/C++ 中的本質
連續記憶體區段
Consecutive Memory Location
為什麼陣列無法伸縮?
Any questions?
什麼是陣列?
為什麼需要陣列?
陣列在 C/C++ 中的語法
陣列的常見使用情境
陣列在記憶體中的特性
陣列在 C/C++ 中的本質
曾否想過直接把陣列變數整個印出來會怎麼樣?
Printing The Array Variable
The outputs… What are these…?
記憶體位址 Memory Address
有記憶體位置可以做什麼?
Try it yourself
輸出 Output
為什麼記憶體位址 + 1 是差 4?
位址運算
一個
int
型態的儲存格地址 + 1會是指向「下一格」
int
儲存格的地址int
在記憶體中所佔大小是「實作定義」,但在大部分的編譯器中,int
佔4bytes
因此,想要將地址指向下一個儲存格,地址要 + 4
說這些要幹嘛…?
Try it yourself
將陣列當作參數傳入函式
Passing array as a parameter
Try it yourself
將陣列傳入函式的注意數項
將一般變數傳入函式
Try it yourself
將陣列傳入函式
Try it yourself
良好的習慣
Try it yourself
講這些的目的不是要教會你們「指標」
只是為日後埋下伏筆,也希望激起你們的興趣
如果非常想了解,不妨上網自學~
Quick Review
Takeaways
感謝參與!
⬆問卷調查