기반된 포인터 (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;
}