2011年10月31日 星期一

Pointer & Handle

對於Array的參數型態,有三種格式可以選:Array Data Pointer、Array Handle和 Array Handle Pointer。假設用arg當做參數名稱,三種不同的Array格式對應的C語言呼叫方式為:  
  1. Array Data Pointer → *arg
  2. Array Handle → **arg
  3. Array Handle Pointer → ***arg

星號表示這些變數是指標。

單星號,用於Array Data Pointer,表示它是一個指標,指向記憶體中的位址。在C語言中,其值代表array所用的記憶體的開始位置。

雙星號,用於Array Handle,表示它是一個Handle。在程式語言中,handle是一個token(通常也是一個指標),讓程式能去存取一項資源,例如一個函式庫中的函式。作業系統利用Handle來搬移heap中的一整塊記憶體。Handle是指標的指標。

三星號,用於Array Handle Pointer,表示它是一個Handle的指標。此種資料型別通常用於更複雜的操作,例如DMA存取、影像操控及作業系統層級的函式等。


補充:某些人將Handle翻譯為「句柄」。

參考網址:
"Array Data Pointer", "Array Handle", 和 "Array Handle Pointer" 有什麼不同?

沒有留言: