Sdílet prostřednictvím


Ukazatele založené (C++)

Konkrétní společnosti Microsoft

__based Klíčového slova umožňuje deklarovat ukazatelů na základě ukazatelů (ukazatelů, které jsou posunu od stávajících ukazatelů).

type __based( base ) declarator 

Poznámky

Ukazatel adres na základě ukazatelů jsou pouze __based klíčové slovo v 32bitové nebo 64bitové kompilace platné.Kompilátor Microsoft 32bitové C/C++ je založen ukazatel 32bitového posunu od základní ukazatel 32-bit.Podobné omezení platí pro 64bitové prostředí, kde je založen ukazatel 64bitové posun od base 64-bit.

Jedno použití ukazatele na základě ukazatelů je trvalá identifikátorů, které obsahují ukazatele.Propojený seznam, který obsahuje ukazatel na základě ukazatelů můžete uložit na disk potom nepokračuje na jiné místo v paměti, ukazateli, které zůstane platné.Příklad:

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

Ukazatel vpBuffer je přiřazena adresa paměti přidělené někdy později v programu.Propojený seznam je přemístěna na relativní hodnotu vpBuffer.

[!POZNÁMKA]

Trvalý identifikátorů obsahujících ukazatele lze provést také pomocí soubory mapované v paměti.

Při přesměrování založen ukazatel základní buď výslovně uvedené nebo implicitně znám prostřednictvím prohlášení.

Pro kompatibilitu s předchozími verzemi _based je synonymum pro __based.

Příklad

Následující kód ukazuje změna založen ukazatel změnou základny.

// 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;
}
  

Viz také

Referenční dokumentace

Klíčových slov jazyka C++

alloc_text