常見資料型別的儲存結構

2022-08-14 05:21:08 字數 1645 閱讀 1729

1   常見資料型別 的記憶體結構

整數  integer  四個位元組 在 32為作業系統 盡量要用這個,因為這個會使  cpu最快。

字元 char   應該是乙個位元組

char是單個字元; pchar 就是指向乙個以null 結尾的每個字元為乙個位元組的字串的指標。 (可以看成是乙個字串)

string是字元陣列,以字元#0結尾;

char只佔一位元組的空間,而pchar儲存的是乙個指標在現在32位的系統中占有1個指標位元組的大小。 type pchar=^char;

pchar型別是乙個指向char的指標,並使用delphi的擴充套件語法.它也能夠作為乙個string或者 是乙個char陣列指標來對待.

1.pchar最經常的使用方式就是作為用c或c++編寫的dll,如windows api的乙個引數型別. 2.可以把乙個pchar作為乙個char陣列指標來對待.陣列下標是integer的子區間,從零開始.

delphi不對該陣列提供任何邊界檢查.通常字串的結束用#0字元來表示.

3.通常通過與inc和dec過程相似的加減整數來完成對pchar指標的算術運算.

長字串轉換到pchar不是自動的。他們之間的不同點導致他們的轉換存在問題。

1,長字串是引用計數的,而pchar不是 2,賦值給長字串是資料的拷貝,而pchar是指向資料的指標。 3,長字串是空止符結尾,幷包含有字串的長度。而pchar是簡單的空止符結尾。( 空止符結尾指以#0 結尾) //舉例: var pc: pchar; begin pc := 'abcd' + #0 + 'efghijklmnopqrstuvwxyz'; showmessage(pc); end;

轉換: string是delphi內定義型別,pchar則是乙個指標字串 ,pchar 好像字尾有#0。相互轉換的話strpas(pchar);//pchar轉成string strpcopy(pchar,string); 或直接pchar(string) //string轉成pchar

string型別轉換為char型別 char --> string[0]

//舉例 procedure tform1.button1click(sender: tobject); var ch:array [0..5] of char; str:string; i:integer; begin str :='123456'; move(str[1],ch,length(str));//move說明:move(從字串的多少位開始移,移到目標,移動多少個長度或大小,注意sizeof與legth的區別) for i:=0 to 5 do     edit1.text :=edit1.text + ch[i];//show:123456 //move(str[3],ch,4);//ch=3456 end;

1、使用指向字串的指標,如果不是以0結尾,執行時就會出現錯誤。為了避免這種錯誤,需要在字串結尾人工加入0 即char(0),或用strpcopy函式在字串結尾自動加0。 例3: 用strpcopy函式賦值會在字串s結尾自動加0。

var

s:string; p:pchar; begin p:=@s[1];

strpcopy(p,'new'); label1.caption:=strpas(p);

label2.caption:=s;

end;

常見資料型別與儲存

名稱 全稱型別說明符 縮寫型別說明符 位數 範圍 整型 int int 16位 32768至 32767 無符號整型 unsigned int unsigned 16位 0 至 65,535 短整型 short int short 16位 32768至 32767 無符號短整型 unsigned s...

常見資料型別轉換

在最近兩個小專案中大量的使用了資料型別之間的互相轉換,因此寫一篇記述下來以便日後查閱。target 目標資料型別 需求資料型別 source 源資料型別 需轉換資料型別 string轉qstring target qstring fromstdstring source unsigned char ...

Windows常見資料型別

一,常見資料型別 word 16位無符號整形資料 dword 32位無符號整型資料 dword32 dword64 64位無符號整型資料 int 32位有符號整型資料型別 int ptr 指向int資料型別的指標型別 int32 32位符號整型 int64 64位符號整型 uint 無符號int l...