共用方式為


基底指標 (C++)

Microsoft 專有的

__based關鍵字可讓您宣告指標 (位移,從現有的指標的指標) 為基礎的指標。

type __based( base ) declarator 

備註

以指標位址的指標都是唯一的形式的__based在 32 位元或 64 位元編譯中都有效的關鍵字。 Microsoft 32 位元 C/C++ 編譯器,基底的指標是 32 位元位移的基底的 32 位元指標。 類似的限制持有的 64 位元環境裡,基底的指標的 64 位元基底的 64 位元位移的位置。

根據指標的指標的用法之一是包含指標的永續性識別項。 可以儲存到磁碟中,根據指標的指標所組成的連結的清單,然後將其重新載入至記憶體中的其他位置,剩餘有效的指標。 例如:

// based_pointers1.cpp
// compile with: /c
void *vpBuffer;
struct llist_t {
   void __based( vpBuffer ) *vpData;
   struct llist_t __based( vpBuffer ) *llNext;
};

指標vpBuffer被指派稍後在程式中配置的記憶體位址。 連結的串列安置相對於值vpBuffer。

注意事項注意事項

保存包含指標的識別項也可藉由使用記憶體映射檔

當解除參考基底的指標,基底必須是明確指定或隱含已知透過宣告。

與先前的版本相容的 _based 是個__based。

範例

下列程式碼示範變更基底的指標藉由變更其基底。

// based_pointers2.cpp
// compile with: /EHsc
#include <iostream>

int a1[] = { 1,2,3 };
int a2[] = { 10,11,12 };
int *pBased;

typedef int __based(pBased) * pBasedPtr;

using namespace std;
int main() {
   pBased = &a1[0];
   pBasedPtr pb = 0;

   cout << *pb << endl;
   cout << *(pb+1) << endl;

   pBased = &a2[0];

   cout << *pb << endl;
   cout << *(pb+1) << endl;
}
  

請參閱

參考

C + + 關鍵字

alloc_text