12月 05, 2008

【語言】指標是什麼 - What is Pointer?

@
  在前面的文章中,我們已經瞭解到變數是什麼。而在這裡,我們要特別把一種特殊的變數獨立出來解釋。這種特殊的變數,就是所謂的指標(pointer)

  首先,我們知道:每一個變數都具有一個唯一的記憶體位址,以及一個變數的值。而所謂的指標,就代表其變數值所儲存的,是某個變數的記憶體位址




  那麼,指標有什麼用處呢?

  或許你還記得,在先前我們曾經提到過的「陣列」。其實,陣列就是指標的一個實現。在使用陣列時,我們所使用的陣列名稱,實際上就是一個指標變數。

  而這個指標所指向的,就是這一群陣列元素的最前端。而陣列的索引值則代表的是指標的偏移,也就是指標所指位置後的第幾個元素。


  除此之外,指標也能夠在某些特定的資料結構(data structure)中,扮演控制存取資料元素,或是連結記憶體的角色。

  例如在我曾經提過的堆疊佇列、與連結串列中,指標都具有相當大的功用。


  儘管指標如此便利,但也因此帶來一些不必要的問題。例如:我們可能會因為不當的指標偏移,使得程式不正確的覆蓋掉記憶體所存的值。即使是程式經驗的老手,也可能會因為指標的誤用,導致難以發現的程式錯誤。

  也就因為如此,在某些程式語言(例如 Java)中,指標就被廢除、為其他方法所替代了。

0 回覆:

張貼留言