>  기사  >  백엔드 개발  >  C 언어에서 근거리, 원거리 및 거대 포인터 설명

C 언어에서 근거리, 원거리 및 거대 포인터 설명

WBOY
WBOY앞으로
2023-09-14 15:13:021456검색

C 언어에서 근거리, 원거리 및 거대 포인터 설명

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

  • 근접 포인터
  • 원거리 포인터
  • 대형 포인터

근접 포인터

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

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

  • 주소 범위 산술 연산자를 사용하여 근거리 포인터를 늘리거나 줄일 수 있습니다.

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

문법

구문은 다음과 같습니다. -

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

다음 명령문은 변수 s

char near *string;

Program

의 Near 포인터를 선언합니다. 다음 프로그램은 Near 포인터의 사용법을 보여줍니다.

#include<stdio.h>
int main(){
   int number=50;
   int near* p;
   p=&number;
   printf("%d",sizeof(p));
   return 0;
}

Output

출력은 다음과 같습니다. -

2

Far 포인터

  • 포인터의 서로 다른 오프셋과 세그먼트 주소를 저장하는 포인터입니다.

  • 16개 세그먼트 모두에 액세스할 수 있습니다.

  • 원거리 포인터 주소 범위는 0~1MB입니다.

  • 포인터가 증가하거나 감소하면 오프셋 부분만 변경됩니다.

문법

구문은 다음과 같습니다. -

<data type> far <pointer definition>
<data type> far <function definition>

다음 문은 s

char far *s;

Program

변수의 원거리 포인터를 선언합니다. 다음 프로그램은 원거리 포인터의 사용법을 보여줍니다.

#include<stdio.h>
int main(){
   int number=50;
   int far *p;
   p=&number;
   printf("%d",sizeof number);
   return 0;
}

Output

출력은 다음과 같습니다. -

4

Big 포인터

  • 둘 다 32비트 주소이므로 먼 포인터와 비슷한 크기의 포인터입니다.

  • 대형 포인터는 세그먼트 작업 루프의 영향을 받지 않고 증가될 수 있습니다.

Procedure

다음 프로그램은 큰 포인터의 사용을 보여줍니다.

#include<stdio.h>
Int main(){
   Char huge *far *ptr;
   Printf("%d%d%d",sizeof(ptr),sizeof(*ptr),sizeof(**ptr));
   Return 0;
}

Output

출력은 다음과 같습니다 -

4 4 1

위 내용은 C 언어에서 근거리, 원거리 및 거대 포인터 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제