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
指標 & 參照
2021/11/05 電算社第七堂社課
記憶體
是電腦儲存變數值的地方,
可以把它想像成是一個很長的紙帶
上面有很多連續的格子,每一個格子有連續的編號
每個格子是 1 bit(0 or 1)
8 個 bit 組成 1 byte
指標 Pointer
指標是一種變數,
裡面存放一個變數的第一個記憶體位置(address)
可以視為它是"指向該變數的變數"
宣告
指向(賦值)
取值
改值
小差異(常用錯!!)
reference(參照)
reference可以理解成是一個變數的別名
它不像指標會儲存記憶體位置
他反而可以直接操控該變數
應用
指標 vs 參照
直接看例子吧:D
函式
call by value & call by address & call by reference
call by value
call by value就是傳值的意思,
呼叫變數時是複製一份數值,
而非將記憶體連動過去
上一堂課中的那些引數都是 call by value
Example:
那如果想改變值的話該怎麼辦呢
這時候就必須回傳
call by address
call by address 就是傳指標,傳到函式時用指標連動到原先的變數,所以改變指標時原先的值也會改變
Example:
call by reference
call by reference就是傳參照,呼叫變數時會直接連動記憶體,所以改變值時原變數的值也會跟著改變
Example:
小練習
試著做出一個可以調換數值的函式吧,規定此函式回傳值必須為void,且輸出必須放在main函式中
輸入說明:輸入兩個數a, b
輸出說明:輸出a, b調換數值後的結果
範例輸入:1 2
範例輸出:2 1
我是防雷頁:D
常見錯誤
解答(call by address)
解答(call by reference)