파스칼-포인터

파스칼의 포인터는 쉽고 재미있게 배울 수 있습니다. 일부 Pascal 프로그래밍 작업은 포인터를 사용하여 더 쉽게 수행되며 동적 메모리 할당과 같은 다른 작업은 포인터를 사용하지 않고 수행 할 수 없습니다. 따라서 완벽한 파스칼 프로그래머가되기 위해서는 포인터를 배울 필요가 있습니다. 간단하고 쉬운 단계로 학습을 시작하겠습니다.

아시다시피 모든 변수는 메모리 위치이며 모든 메모리 위치에는 메모리의 주소를 나타내는 포인터 변수의 이름을 사용하여 액세스 할 수있는 주소가 정의되어 있습니다.

포인터 란?

포인터는 동적 변수로, 그 값은 다른 변수의 주소, 즉 메모리 위치의 직접 주소입니다. 다른 변수 나 상수와 마찬가지로 포인터를 사용하여 변수 주소를 저장하려면 먼저 포인터를 선언해야합니다. 포인터 변수 선언의 일반적인 형식은 다음과 같습니다.

type
   ptr-identifier = ^base-variable-type;

포인터 유형은 캐럿 기호 (^)의 위쪽 화살표 앞에 기본 유형을 추가하여 정의됩니다. 기본 유형은 데이터 항목의 유형을 정의합니다. 포인터 변수가 특정 유형으로 정의되면 해당 유형의 데이터 항목 만 가리킬 수 있습니다. 포인터 유형이 정의되면 다음을 사용할 수 있습니다.var 포인터 변수를 선언하는 선언.

var
   p1, p2, ... : ptr-identifier;

다음은 몇 가지 유효한 포인터 선언입니다-

type
   Rptr = ^real;
   Cptr = ^char;
   Bptr = ^ Boolean;
   Aptr = ^array[1..5] of real;
   date-ptr = ^ date;
      Date = record
         Day: 1..31;
         Month: 1..12;
         Year: 1900..3000;
      End;
var
   a, b : Rptr;
   d: date-ptr;

포인터 변수는 동일한 캐럿 기호 (^)를 사용하여 역 참조됩니다. 예를 들어 포인터 rptr이 참조하는 관련 변수 는 rptr ^ 입니다. 다음과 같이 액세스 할 수 있습니다.

rptr^ := 234.56;

다음 예는이 개념을 설명합니다.

program exPointers;
var
   number: integer;
   iptr: ^integer;

begin
   number := 100;
   writeln('Number is: ', number);
   
   iptr := @number;
   writeln('iptr points to a value: ', iptr^);
   
   iptr^ := 200;
   writeln('Number is: ', number);
   writeln('iptr points to a value: ', iptr^);
end.

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

Number is: 100
iptr points to a value: 100
Number is: 200
iptr points to a value: 200

파스칼로 메모리 주소 인쇄

Pascal에서는 주소 연산자 (@)를 사용하여 포인터 변수에 변수 주소를 할당 할 수 있습니다. 이 포인터를 사용하여 데이터 항목을 조작하고 액세스합니다. 그러나 어떤 이유로 메모리 주소 자체로 작업해야하는 경우 단어 유형 변수에 저장해야합니다.

우리가 포인터에 저장된 메모리 주소를 인쇄하려면 위의 예제를 확장 할 수 iptr을 -

program exPointers;
var
   number: integer;
   iptr: ^integer;
   y: ^word;

begin
   number := 100;
   writeln('Number is: ', number);
   iptr := @number;
   writeln('iptr points to a value: ', iptr^);
   
   iptr^ := 200;
   writeln('Number is: ', number);
   writeln('iptr points to a value: ', iptr^);
   y := addr(iptr);
   writeln(y^); 
end.

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

Number is: 100
iptr points to a value: 100
Number is: 200
iptr points to a value: 200
45504

NIL 포인터

항상 할당하는 것이 좋습니다. NIL할당 할 정확한 주소가없는 경우 포인터 변수에 값을 추가합니다. 이것은 변수 선언시 수행됩니다. 할당 된 포인터NIL아무데도 가리 키지 않습니다. 다음 프로그램을 고려하십시오-

program exPointers;
var
   number: integer;
   iptr: ^integer;
   y: ^word;

begin
   iptr := nil;
   y := addr(iptr);
   
   writeln('the vaule of iptr is ', y^);
end.

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

The value of ptr is 0

확인하려면 nil 포인터는 다음과 같이 if 문을 사용할 수 있습니다-

if(ptr <> nill )then     (* succeeds if p is not null *)
if(ptr = nill)then    (* succeeds if p is null *)

파스칼 포인터 상세

포인터는 많지만 쉬운 개념을 가지고 있으며 Pascal 프로그래밍에 매우 중요합니다. 다음과 같은 몇 가지 중요한 포인터 개념이 있습니다. 파스칼 프로그래머에게는 분명합니다.

Sr. 아니요 개념 및 설명
1 파스칼-포인터 산술

포인터에 사용할 수있는 산술 연산자는 증가, 감소, +,-네 가지가 있습니다.

2 파스칼-포인터 배열

여러 포인터를 보유하도록 배열을 정의 할 수 있습니다.

파스칼-포인터 포인터

Pascal을 사용하면 포인터에 포인터를 둘 수 있습니다.

4 Pascal에서 하위 프로그램에 포인터 전달

참조 또는 주소로 인수를 전달하면 호출 된 하위 프로그램이 호출 하위 프로그램에서 전달 된 인수를 변경할 수 있습니다.

5 파스칼의 하위 프로그램에서 포인터 반환

Pascal을 사용하면 하위 프로그램이 포인터를 반환 할 수 있습니다.