首頁  >  文章  >  web前端  >  POSITION用法解釋

POSITION用法解釋

巴扎黑
巴扎黑原創
2017-06-27 13:39:251919瀏覽

POSITION是MFC模板類別庫中常用的一個資料型別,我們從它的定義可以看出,其實,它就是一個指標。
// abstract iteration position
struct POSITION { };
typedef POSITION* POSITION;
MFC給出的註解是:一個抽象的迭代位置,既然是抽象,也就是沒有給定具體的資料類型,以滿足不同的模板參數的需要。
在CList中,常會用POSITION作為引用參數,或作為回傳值。下面,我們就舉2個簡單的例子,來幫助大家理解這個資料類型,不過在此之前,我要囉嗦一下,因為有很多人對POSITION這個空結構體,表示懷疑,似乎這成為了他們理解的障礙。既然是一個空的結構體,怎麼能用它來定義指標呢?
其實,C++編譯器,不會將一個空的結構體完全看成是空的,編譯器會為它分配1byte的內存,其實說白了POSITION這個結構體,就相當於一個unsigned char的類型,所以POSITION也等於是unsigned char,也就是Windows裡面的BYTE類型,從而POSITION也就有了一個可以等價的形式,那就是BYTE*。
我們舉CList中2個典型的成員函數作為講解的重點,當然,大家應該都知道CList是一個鍊錶資料結構。下面看這兩個函數:
1. POSITION GetHeadPosition() const;
顯而易見,這個函數,是用來取得鍊錶頭的,它的回傳值是一個POSITION,其實也就是一個指標。這個指針代表了誰?當然,就是你一直想要的鍊錶頭在鍊錶中的指針,這個指針是new出來的,你絕對不能擅自的將這個指針delete掉。
2. TYPE& GetAt(POSITION position);
這個函數,看起來,比較怪。它的唯一的入參是一個指針,其實,有可能就是你剛剛用GetHeadPosition得到的頭節點指針。這個函數的意思,也就是,需要你提供一個節點的位址,然後,CList會遍歷整個鏈,去尋找並回傳符合這個位址的節點資料。
廢話了那麼多,一言以蔽之,畢其功於一役,換句話說就是:
POSITION,你可以把它看成是一個學號,有了它,你就可以找到任何一個班裡的學生。
POSITION在MFC用來存放各種List或Array物件索引,以便在遍歷時標識元素的位置。其實就是一個32位元值,其內容可能是指針,或是數組的Index。


以上是POSITION用法解釋的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn