메모리 모델과 세그먼트에 따라 포인터는 세 가지 유형으로 구분됩니다.
는 64Kb 메모리 데이터 내에서 작동하는 포인터입니다. 세그먼트 범위 포인터.
해당 데이터 세그먼트를 벗어난 주소에는 액세스할 수 없습니다.
주소 범위 산술 연산자를 사용하여 근거리 포인터를 늘리거나 줄일 수 있습니다.
near 키워드를 사용하면 모든 포인터를 가까운 포인터로 만들 수 있습니다.
구문은 다음과 같습니다. -
<data type> near <pointer definition> <data type> near <function definition>
다음 명령문은 변수 s
char near *string;
의 Near 포인터를 선언합니다. 다음 프로그램은 Near 포인터의 사용법을 보여줍니다.
#include<stdio.h> int main(){ int number=50; int near* p; p=&number; printf("%d",sizeof(p)); return 0; }
출력은 다음과 같습니다. -
2
포인터의 서로 다른 오프셋과 세그먼트 주소를 저장하는 포인터입니다.
16개 세그먼트 모두에 액세스할 수 있습니다.
원거리 포인터 주소 범위는 0~1MB입니다.
포인터가 증가하거나 감소하면 오프셋 부분만 변경됩니다.
구문은 다음과 같습니다. -
<data type> far <pointer definition> <data type> far <function definition>
다음 문은 s
char far *s;
변수의 원거리 포인터를 선언합니다. 다음 프로그램은 원거리 포인터의 사용법을 보여줍니다.
#include<stdio.h> int main(){ int number=50; int far *p; p=&number; printf("%d",sizeof number); return 0; }
출력은 다음과 같습니다. -
4
둘 다 32비트 주소이므로 먼 포인터와 비슷한 크기의 포인터입니다.
대형 포인터는 세그먼트 작업 루프의 영향을 받지 않고 증가될 수 있습니다.
다음 프로그램은 큰 포인터의 사용을 보여줍니다.
#include<stdio.h> Int main(){ Char huge *far *ptr; Printf("%d%d%d",sizeof(ptr),sizeof(*ptr),sizeof(**ptr)); Return 0; }
출력은 다음과 같습니다 -
4 4 1
위 내용은 C 언어에서 근거리, 원거리 및 거대 포인터 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!