以前覺得這東西很深奧,不知道要拿來幹嘛的(因為很久以前只有上課聽過,沒在自己實驗XD)
最近終於練到這,總結書上跟看別人寫的指標的用途,還有我的使用心得:
補述:這裡的「指標」是指新手入門書中「指標」的章節講的東西
不是單純指「指標」,先進大大看不順眼的話,建議可以直接左轉喔 ^^"
1.
指標的概念跟陣列還有函數是湊一塊的,有指標的概念的話才能實現一些單純「傳值」時辦不到的功能
函數沒有指標的話,只能靠回傳(return)傳回「一個值」給main()
然後另外用一個變數來接這個結果
例如:
int i;
i=funciton ();
用i來接回傳值
有了指標的概念後,就可以直接在函數內對main() 裡設定的多個變數進行變動
實作上就是在函數內利用 *ptr去更改 main() 裡的變數的值
因為可以更改多個值,就可以拿來操作陣列(含有多個元素)
換句話說,只靠回傳值的話,一次頂多操作陣列中的一個元素
可是用了指標後,就可以一次處理整個陣列
2.
指標在實用上,似乎也是要處理陣列比較需要(使用經驗不多X_X)
目前看到比較多的是用在影像處理上
所以譬如處理圖片就會用到
例如點陣圖,每個點都是RGB三色,用0-255表示暗亮的程度
這時如果要把照片加黑的話,就把所有的點的數值都進行 *0.5 或是 -30 之類的的操作
這樣就變暗了
這時用指標配合函數,就能達成這個效果
文章標籤
全站熱搜

Hey , 首先,您的第一點觀點是錯的, "函數沒有指標的話,只能靠回傳(return)傳回「一個值」給main()然後另外用一個變數來接這個結果" 假設說我有一個函數 void swap(int & a, int &b) { a^=b; b^=a; a^=b; } 則我也不需要透過Point,就能改變值,詳細您可以去看call by reference & call by value。 至於Point,你可以理解為"指向記憶體的一個東西",你可以透過*符號去操作該指向的那塊記憶體的值,這樣會比較好懂。 其二則是,我們在撰寫影像相關的東西時,那些+-*/ 不是透過Point去做,而是一張照片(圖片)我們將他放在一塊記憶體裡面,然後我們透過"指標"去操作和調整這塊記憶體裡面的值,而用的方式,才是您所說的+-*/。 希望這些資訊有幫助到您, Eric
痾...其實你寫的就是我要寫的意思啊~ 可能是辭不達意吧><" 看來措辭要再精準點 所以我寫「指標」並不會被業界的人當成「位址」的同義詞就是了...XD||| 另外,point是指?是指pointer嗎?還是業界有另一種講法?_? 影像部分感謝分享,只看過一些網路上的說法,沒碰過業內的人親口證實QQ