iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 3
1
自我挑戰組

30 Days 如何把 C 語言偽裝成高階語言 OWO /系列 第 3

Days 3: 重溫指標:記憶體地址 、 儲存空間

▌重溫指標。


以下介紹 記憶體地址儲存空間變數類型變數名稱 這四個概念

用最簡單的指標應用來解釋:

int b;
int *a = &b;

a, b 被宣告出來的時候,並且未初始化 :
https://ithelp.ithome.com.tw/upload/images/20181017/2011178868WKnrca4f.png
a 被宣告為 int*b 被宣告為 int

由於 a, b未初始化 , 儲存空間中儲存 垃圾值(garbage value)
一些不能預測未知、並且不能使用無用的值


——
使 a 指向 b, (個人認為使用指向這字眼太抽象)
即是 把 b地址(記憶體地址) 放入 a儲存空間
https://ithelp.ithome.com.tw/upload/images/20181017/20111788YyvNz9BLuu.png
上面不用指向的方式,用一層虛擬取值層級表示
(可能)會比較容易理解

▌行為:

b 的地址取替了 a 儲存空間 原本的垃圾值,( a = &b )

a 的類型是int*(指標類型), 所以 a儲存空間是用於儲存記憶體地址

由於 a 儲存了 b 的地址, 所以 *a 等價 b儲存空間,即 b
即 所謂的 a 指標 指向b

* (星號) 是 取值運算符 / 間接尋址運算符 / 間接取值運算子 。 ( * 的不同名稱


下一篇介紹比較複雜一點點的例子


上一篇
Days 2: 大綱(十分建議先看這個)
下一篇
Days 4: 重溫指標:靜態變數的地址、函數回傳地址
系列文
30 Days 如何把 C 語言偽裝成高階語言 OWO /31

1 則留言

0
froce
iT邦大師 1 級 ‧ 2018-10-18 16:18:18

我是非本科系自學的,從python起家,很想瞭解一下C,所以這系列請一定要繼續下去啊。

CWKSC iT邦新手 5 級 ‧ 2018-10-18 18:45:43 檢舉

/images/emoticon/emoticon16.gif這個系列不太多入門的知識喔..
謝謝支持 OWO

我要留言

立即登入留言