▌重溫指標。
以下介紹 記憶體地址 、 儲存空間 、 變數類型 和 變數名稱 這四個概念。
用最簡單的指標應用來解釋:
int b;
int *a = &b;
在 a, b 被宣告出來的時候 , 並且未初始化 :
a 被宣告為 int* , b 被宣告為 int 。
由於 a, b 均未初始化 , 儲存空間中儲存 垃圾值(garbage value) ,
一些不能預測、未知、並且不能使用、無用的值 。
——
使 a 指向 b, (個人認為使用指向這字眼太抽象)
即是 把 b 的地址(記憶體地址) 放入 a 的儲存空間:
上面不用指向的方式,用一層虛擬取值層級表示,
(可能)會比較容易理解。
int b;
int *a = &b;
a 被宣告為 int* , b 被宣告為 int 。
一些不能預測、未知、並且不能使用、無用的值 。
使 a 指向 b, (個人認為使用指向這字眼太抽象)
即是 把 b 的地址(記憶體地址) 放入 a 的儲存空間:
上面不用指向的方式,用一層虛擬取值層級表示,
(可能)會比較容易理解。
▌行為:
b 的地址取替了 a 儲存空間 原本的垃圾值,( a = &b )
a 的類型是int*(指標類型), 所以 a 的儲存空間是用於儲存記憶體地址。
由於 a 儲存了 b 的地址, 所以 *a 等價 b 的儲存空間,即 b 。
即 所謂的 a 指標 指向了 b。
* (星號) 是 取值運算符 / 間接尋址運算符 / 間接取值運算子 。 ( * 的不同名稱
下一篇介紹比較複雜一點點的例子 。
a 的類型是int*(指標類型), 所以 a 的儲存空間是用於儲存記憶體地址。
即 所謂的 a 指標 指向了 b。
* (星號) 是 取值運算符 / 間接尋址運算符 / 間接取值運算子 。 ( * 的不同名稱
0 Comments
發佈留言