在計算機科學中,指標是一種程式語言物件,它儲存位於計算機記憶體中的另一個值的記憶體地址。指標引用記憶體中的一個位置,獲得儲存在該位置的值稱為指標解引用。作為類比,一本書索引中的頁碼可以被認為是指向相應頁面的指標;透過翻轉到具有給定頁碼的頁面並讀取在該頁面上找到的文字,可以取消這種指標的引用。指標變數的實際格式和內容取決於底層計算機體系結構。
使用指標可以顯著提高重複操作的效能,如遍歷可迭代的資料結構,例如字串、查詢表、控制表和樹結構。特別是,複製和取消引用指標通常比複製和訪問指標指向的資料在時間和空間上要便宜得多。
指標還用於儲存過程程式設計中被呼叫子程式的入口點地址,以及動態連結庫(DLL)的執行時連結地址。在面向物件程式設計中,指向函式的指標用於繫結方法,通常使用所謂的虛擬方法表。
指標是對更抽象的引用資料型別的簡單、更具體的實現。一些語言,尤其是低階語言支援某種型別的指標,儘管有些語言對它們的使用有更多的限制。雖然“指標”一般用來指引用,但它更適合於介面明確允許指標作為記憶體地址(透過指標算術)進行操作的資料結構,而不是不允許這樣做的magic cookie或capability。因為指標允許對記憶體地址進行受保護和不受保護的訪問,所以使用它們存在風險,尤其是在後一種情況下。原始指標通常以類似整數的格式儲存;但是,試圖取消引用或“查詢”這樣一個值不是有效記憶體地址的指標會導致程式崩潰。為了緩解這個潛在的問題,作為型別安全問題,指標被認為是由它們所指向的資料型別引數化的獨立型別,即使底層表示是整數。也可以採取其他措施(例如驗證和邊界檢查),以驗證指標變數包含的值既是有效的儲存器地址,又在處理器能夠定址的數值範圍內。
在計算機科學中,指標是一種程式語言物件,它儲存位於計算機記憶體中的另一個值的記憶體地址。指標引用記憶體中的一個位置,獲得儲存在該位置的值稱為指標解引用。作為類比,一本書索引中的頁碼可以被認為是指向相應頁面的指標;透過翻轉到具有給定頁碼的頁面並讀取在該頁面上找到的文字,可以取消這種指標的引用。指標變數的實際格式和內容取決於底層計算機體系結構。
使用指標可以顯著提高重複操作的效能,如遍歷可迭代的資料結構,例如字串、查詢表、控制表和樹結構。特別是,複製和取消引用指標通常比複製和訪問指標指向的資料在時間和空間上要便宜得多。
指標還用於儲存過程程式設計中被呼叫子程式的入口點地址,以及動態連結庫(DLL)的執行時連結地址。在面向物件程式設計中,指向函式的指標用於繫結方法,通常使用所謂的虛擬方法表。
指標是對更抽象的引用資料型別的簡單、更具體的實現。一些語言,尤其是低階語言支援某種型別的指標,儘管有些語言對它們的使用有更多的限制。雖然“指標”一般用來指引用,但它更適合於介面明確允許指標作為記憶體地址(透過指標算術)進行操作的資料結構,而不是不允許這樣做的magic cookie或capability。因為指標允許對記憶體地址進行受保護和不受保護的訪問,所以使用它們存在風險,尤其是在後一種情況下。原始指標通常以類似整數的格式儲存;但是,試圖取消引用或“查詢”這樣一個值不是有效記憶體地址的指標會導致程式崩潰。為了緩解這個潛在的問題,作為型別安全問題,指標被認為是由它們所指向的資料型別引數化的獨立型別,即使底層表示是整數。也可以採取其他措施(例如驗證和邊界檢查),以驗證指標變數包含的值既是有效的儲存器地址,又在處理器能夠定址的數值範圍內。