파스칼-포인터
파스칼의 포인터는 쉽고 재미있게 배울 수 있습니다. 일부 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을 사용하면 하위 프로그램이 포인터를 반환 할 수 있습니다. |