Delphi의 유형과 포인터

6784 단어 Delphi
델피의 유형과 지침에 대해 이야기하다[1].
먼저 성명: 내가 말한 이 물건들을 교과서로 삼지 마라. 이것은 모두 자신의 얕은 견해이다.동시에 지적을 받기를 바란다.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.

  
위와 같은 것을 알면 조작할 수 있고 다른 사람의 코드를 알아볼 수 있다.그러나 지침이 도대체 어떻게 된 일인지 철저히 이해하려면 메모리부터 말해야 한다.

좋은 웹페이지 즐겨찾기