欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何進(jìn)行數(shù)組類型與數(shù)組指針的巧妙利用

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何進(jìn)行數(shù)組類型與數(shù)組指針的巧妙利用,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

員工經(jīng)過(guò)長(zhǎng)期磨合與沉淀,具備了協(xié)作精神,得以通過(guò)團(tuán)隊(duì)的力量開(kāi)發(fā)出優(yōu)質(zhì)的產(chǎn)品。成都創(chuàng)新互聯(lián)堅(jiān)持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因?yàn)椤皩W⑺詫I(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡(jiǎn)單”。公司專注于為企業(yè)提供網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、電商網(wǎng)站開(kāi)發(fā),微信小程序定制開(kāi)發(fā),軟件定制網(wǎng)站等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。

下面通過(guò)存取結(jié)構(gòu), 慢慢引入了數(shù)組類型與指針的一些使用方法; 其中六個(gè)小例子的測(cè)試內(nèi)容和結(jié)果都是一樣的.


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;
    Button5: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

type {先定義結(jié)構(gòu)和結(jié)構(gòu)指針}
  PMyRec = ^TMyRec;
  TMyRec = record
    F1: Char;
    F2: Word;
  end;

{用靜態(tài)數(shù)組儲(chǔ)存或讀寫(xiě)結(jié)構(gòu)很方便}
procedure TForm1.Button1Click(Sender: TObject);
var
  ArrRec: array[0..2] of TMyRec;
  i: Integer;
begin
  {寫(xiě)入}
  for i := 0 to 2 do
  begin
    ArrRec[i].F1 := Chr(i+65);
    ArrRec[i].F2 := (i+1) * 10;
  end;

  {讀取}
  for i := 0 to Length(ArrRec) - 1 do
    ShowMessageFmt('%s, %d', [ArrRec[i].F1, ArrRec[i].F2]);
end;

{這個(gè)只是定義了一塊內(nèi)存, 沒(méi)用數(shù)組的概念, 有點(diǎn)麻煩}
procedure TForm1.Button2Click(Sender: TObject);
var
  buf: PMyRec;
begin
  GetMem(buf, SizeOf(TMyRec) * 3); {申請(qǐng)內(nèi)存}

  {寫(xiě)入}
  buf^.F1 := 'A';
  buf^.F2  := 10;
  Inc(buf);       {到下一個(gè)}
  buf^.F1 := 'B';
  buf^.F2  := 20;
  Inc(buf);
  buf^.F1 := 'C';
  buf^.F2  := 30;

  Dec(buf, 2);    {回到開(kāi)始}

  {讀取}
  ShowMessageFmt('%s, %d', [buf^.F1, buf^.F2]);
  Inc(buf);       {到下一個(gè)}
  ShowMessageFmt('%s, %d', [buf^.F1, buf^.F2]);
  Inc(buf);
  ShowMessageFmt('%s, %d', [buf^.F1, buf^.F2]);

  Dec(buf, 2);    {回到開(kāi)始}
  FreeMem(buf);   {釋放內(nèi)存}
end;

{可以給結(jié)構(gòu)定義一個(gè)數(shù)組類型}
procedure TForm1.Button3Click(Sender: TObject);
type
  TArr = array of TMyRec;
var
  buf: PMyRec;
  i: Integer;
begin
  GetMem(buf, SizeOf(TMyRec) * 3);

  for i := 0 to 2 do
  begin
    TArr(buf)[i].F1 := Chr(i+65);
    TArr(buf)[i].F2 := (i+1) * 10;
  end;

  for i := 0 to 2 do
    ShowMessageFmt('%s, %d', [TArr(buf)[i].F1, TArr(buf)[i].F2]);

  FreeMem(buf);
end;

{直接用動(dòng)態(tài)數(shù)組也行}
procedure TForm1.Button4Click(Sender: TObject);
var
  Arr: array of TMyRec;
  i: Integer;
begin
  SetLength(Arr, 3);
  for i := 0 to 2 do
  begin
    Arr[i].F1 := Chr(i+65);
    Arr[i].F2 := (i+1) * 10;
  end;

  for i := 0 to 2 do
    ShowMessageFmt('%s, %d', [Arr[i].F1, Arr[i].F2]);
end;

{使用一個(gè)元素的數(shù)組指針, 這是很常用的}
procedure TForm1.Button5Click(Sender: TObject);
type
  PArr = ^TArr;
  TArr = array[0..0] of TMyRec;
var
  buf: PArr;
  i: Integer;
begin
  GetMem(buf, SizeOf(TMyRec) * 3);

  for i := 0 to 2 do
  begin
    buf^[i].F1 := Chr(i+65);
    buf^[i].F2 := (i+1) * 10;
  end;

  {用這種方法不能像下面這樣讀寫(xiě), 也就是 [] 中不能是超過(guò) 0 的常數(shù), 但可以用變量}
  {這也容易理解, 因?yàn)槌A繒?huì)直接編譯到代碼中, 在沒(méi)有分配內(nèi)存以前, 編譯器不知道數(shù)組會(huì)更大}
  {要解決這個(gè)問(wèn)題需要用下一個(gè)方法}
//  buf[0].F1 := 'A';
//  buf[0].F2 := 10;
//  buf[1].F1 := 'B';
//  buf[1].F2 := 20;
//  buf[2].F1 := 'C';
//  buf[2].F2 := 30;

  for i := 0 to 2 do
    ShowMessageFmt('%s, %d', [buf[i].F1, buf[i].F2]);

  FreeMem(buf);
end;

{使用一個(gè)超大的數(shù)組指針, Delphi 的 TList 類就是這么干的}
procedure TForm1.Button6Click(Sender: TObject);
type
  PArr = ^TArr;
  TArr = array[0..100000] of TMyRec; {不要擔(dān)心內(nèi)存暴漲, 使用時(shí)我們只用其指針}
var
  buf: PArr;
  i: Integer;
begin
  GetMem(buf, SizeOf(TMyRec) * 3);

  for i := 0 to 2 do
  begin
    buf^[i].F1 := Chr(i+65);
    buf^[i].F2 := (i+1) * 10;
  end;

  {和上例不同的是, 下面的代碼也可以}
//  buf[0].F1 := 'A';
//  buf[0].F2 := 10;
//  buf[1].F1 := 'B';
//  buf[1].F2 := 20;
//  buf[2].F1 := 'C';
//  buf[2].F2 := 30;

  for i := 0 to 2 do
    ShowMessageFmt('%s, %d', [buf[i].F1, buf[i].F2]);

  FreeMem(buf);
end;

end.

上述就是小編為大家分享的如何進(jìn)行數(shù)組類型與數(shù)組指針的巧妙利用了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

新聞標(biāo)題:如何進(jìn)行數(shù)組類型與數(shù)組指針的巧妙利用
網(wǎng)站URL:http://aaarwkj.com/article30/gopspo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、定制開(kāi)發(fā)、網(wǎng)站內(nèi)鏈、服務(wù)器托管、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)
国产区精品福利在线熟女| 精品一二三区在线天堂| 国模在线视频一区二区| 精品国产精品中文字幕| 色六月婷婷六月久久六月| 日韩精品视频一区二区在线观看| 亚洲国产日韩一区二区在线| 国产精品日韩欧美亚洲| 久久国产精品欧美熟妇| 一区不卡在线视频免费国产| 国产夫妻一区二区三区| 在线免费观看日韩黄片| 日韩av在线观看大全| 日韩在线国产亚洲精品| 五月天丁香婷婷狠狠狠| 国产精品老熟女一区二区| 日韩亚洲人成网站在线播放| 久久精品女人天堂av免费观看| 91人妻人澡人人爽| 国产免费很黄很色视频| 免费女性啪啪无遮挡网站| 男女激情视频久久精品| 加勒比视频在线观看一区| 久久久久久久精品久久| 黄色片在线观看中文字幕| 亚洲欧美日韩之国产综合| 国产三级精品大乳人妇| 在线播放亚洲一区二区三区| 久久夜色精品亚洲国产| 亚洲天堂免费在线播放| 国产内射一级一片内射高清视频1 亚洲一区二区三区不卡伦理 | 日韩欧美啪啪一区二区| 欧美亚洲另类色自拍偷拍| 日本精品不卡一二三区| 亚洲男人的天堂社区av| 久久亚洲av麻衣北条麻妃| 一区二区三区艳情播放| 日韩不卡一区二区在线观看| 亚洲精品不卡一区二区| 久久久亚洲精品中文字幕蜜桃| 一区二区三区视频在线国产|