※ 引述《c10016338 (cwtyeahyeah)》之銘言:
: 如題
: 本魯學店資工系啦,上學期學基礎c++爽爽過,雖然也有學到一些指標,但因為是解題導
: 向,所以沒很在意,想不到這學期的物件導向,才上到用指標寫出二維陣列,就聽到腦袋
: 空空,這樣484該轉系啦?
指標是很多初學者的惡夢
但我覺得指標學不會 不是因為腦袋不好 是因為對程式沒有基本的概念
我建議所有大學教授 先從組合語言教起
首先 指標只是個虛幻的名詞 他跟整數型別沒啥兩樣
char c = 'A';
size_t ptr = (size_t)(&c);
char c_dereference = *((char*)ptr);
為什麼呢?因為編譯器只在乎解讀一個記憶體位置其數值的方法
這也就是為什麼C++允許用戶在宣告時,
使用其他使用者自訂型別可以只用forward declaration搭配reference跟pointer
因為編譯器只要知道 這個變數的大小就好了
相反的 如果你要編譯器編譯一個大小都不知道的型別 是不可能的
回到指標 不管是指標 int 還是 char 都只是數據的型別
C/C++的程式設計師被賦予可以用任何型別解讀任何數據的權力
但後果要自行負責
Pointer學不好 還有一個原因
就是對用詞不夠了解
int* ptr = &an_integer;
"int*" 是一個型別 就是 整數型別的指標型別 很饒口
"&" 在這邊 叫做address-of(取址) operator 顧名思義 就是取址
int copy = *ptr;
這時候 "*" 這個符號 叫做 dereference operator 中文有人翻反參照
Pointer的核心玩法 其實是function pointer 也是C++多型的實作原理
不過我建議 在台灣與其練C++ 不如把C練好 要不然就是轉戰其他潮語言