Re: [問卦]慟!資工系不懂指標484不用玩了

作者: bachelorwhc (單身老王)   2018-03-11 10:53:33
※ 引述《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練好 要不然就是轉戰其他潮語言
作者: showbbs (小林村加油)   2018-03-11 10:58:00
*((char*)ptr)<--等於ptr嗎
作者: t81511270 (justlikeING)   2018-03-11 11:01:00
就好像 唱很饒口 的rap一樣= =
作者: LuSirOtaKu (鏀鏀der)   2018-03-11 11:04:00
pointer其實搞懂後真得挺強大又有趣的 就真得對初學者不友善

Links booklink

Contact Us: admin [ a t ] ucptt.com