Delphi의 유형과 포인터
6784 단어 Delphi
먼저 성명: 내가 말한 이 물건들을 교과서로 삼지 마라. 이것은 모두 자신의 얕은 견해이다.동시에 지적을 받기를 바란다.Delphi의 포인터는 유형 포인터와 유형 포인터 없음 두 종류로 나뉜다.Delphi의 유형은 자주 사용하는 것도 수백 개가 있어야 하며, 우리는 각 유형에 해당하는 유형 지침을 정의할 수 있다.사실 Delphi는 많은 유형에 대해 포인터를 미리 정의했다. 예를 들어 데이터 형식: Integer에 대응하는 Pinteger가 있다.Char에 대응하는 PChar가 있음;string에 대응하는 PString이 있음;예를 들어 TPoint에 대응하는 PPoint가 있다.Tcolor에 대응하는 PColor 등이 있습니다.또한 포인터에도 포인터가 있을 수 있다. 예를 들어 PChar는 문자 포인터이고 PPChar는 PChar의 포인터이다(이것은 모두델파이가 미리 정의한 것이다).위의 예에 따라 우리는 먼저 유형과 지침의 명칭 규칙을 정리한다. 유형 약정은 T로 시작한다(Delphi의 일반적인 데이터 형식을 제외한다. 예를 들어:String).바늘로 P로 머리 치기 약속하기;바늘의 바늘은 PP로 머리를 때리기로 약속했다.유형과 포인터는 분리할 수 없는 두 개념으로 포인터 자체도 하나의 유형인'포인터 유형'이다.
먼저 포인터와 관련된 연산자(@, ^, Addr)를 알아보십시오.
@
Addr
^
@ 변수
변수 가져오기 포인터
Addr(변수)
포인터
포인터가 가리키는 실제 데이터 가져오기
var Pxxx:^ 유형
Pxxx 유형의 포인터를 정의하는 변수
type Pxxx = ^ 유형
Pxxx를 특정 유형의 포인터로 정의
예를 들면 다음과 같습니다.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//Integer PInteger
procedure TForm1.Button1Click(Sender: TObject);
var
int: Integer;
pint: PInteger; { , Integer }
begin
int := 100;
pint := @int; { pint int }
pint^ := pint^ + 1; { pint^ int , :}
ShowMessage(IntToStr(int)); {101}
ShowMessage(IntToStr(pint^)); {101}
end;
//
procedure TForm1.Button2Click(Sender: TObject);
var
int: Integer;
PMyInt: ^Integer;
begin
int := 100;
PMyInt := Addr(int); { : PMyInt := @int; }
PMyInt^ := PMyInt^ + 1;
ShowMessage(IntToStr(int)); {101}
ShowMessage(IntToStr(PMyInt^)); {101}
end;
//
procedure TForm1.Button3Click(Sender: TObject);
type
PInt = ^Integer;
var
int: Integer;
PMyInt: PInt;
begin
int := 100;
PMyInt := @int;
PMyInt^ := PMyInt^ + 1;
ShowMessage(IntToStr(int)); {101}
ShowMessage(IntToStr(PMyInt^)); {101}
end;
//
procedure TForm1.Button4Click(Sender: TObject);
var
int: Integer;
pint: PInteger;
ppint: ^PInteger;
begin
int := 100;
pint := @int;
ppint := @pint;
ppint^^ := ppint^^ + 1;
ShowMessage(IntToStr(int)); {101}
ShowMessage(IntToStr(pint^)); {101}
ShowMessage(IntToStr(ppint^^)); {101}
end;
end.
위와 같은 것을 알면 조작할 수 있고 다른 사람의 코드를 알아볼 수 있다.그러나 지침이 도대체 어떻게 된 일인지 철저히 이해하려면 메모리부터 말해야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Delphi] TStringBuilder그리고 꼭 사용해야만 할까? 그림처럼 Heap 영역에 "Hello" 공간을 생성하고 포인팅을 한다. "Hello World" 공간을 새로 생성한 후 포인팅을 하게 된다. 결국 "Hello" 라는 String 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.