Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 언어로 근거리 초대형 포인터 설명

<시간/>

메모리 모델 및 세그먼트에 따라 포인터는 세 가지 유형으로 분류됩니다 -

  • 가까운 포인터
  • 먼 포인터
  • 큰 포인터

가까운 포인터

  • 메모리의 64Kb 데이터 세그먼트 범위에서 작동하는 포인터입니다.

  • 해당 데이터 세그먼트를 넘어서는 주소에 액세스할 수 없습니다.

  • 근거리 포인터는 산술 연산자를 사용하여 주소 범위를 증가 또는 감소시킬 수 있습니다.

  • Near 키워드를 사용하면 모든 포인터를 Near 포인터로 만들 수 있습니다.

구문

구문은 다음과 같습니다 -

<data type> near <pointer definition>
<data type> near <function definition>
근처

다음 명령문은 변수 s

에 대한 가까운 포인터를 선언합니다.
char near *string;

프로그램

다음 프로그램은 근거리 포인터의 사용법을 보여줍니다.

#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