共用方式為


Based 指標 (C++)

__based關鍵詞可讓您根據指標來宣告指標(與現有指標位移的指標)。 關鍵詞 __based Microsoft特定。

語法

type __based( base ) declarator

備註

以指標地址為基礎的指標是32位或64位編譯中唯一有效的關鍵詞形式 __based 。 對於 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_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;
}
1
2
10
11

另請參閱

關鍵字
alloc_text