• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

delphi中String和动态静态数组

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

默认string类型为ansiString;有编译开关控制

shortString:
strShort : shortString;
strShort 大小256字节,可根据sizeof()计算出,strShort[0]存储字符串长度,所以最大为255。
全局变量strShort 默认初始化为空字符串,长度length为0;
局部变量strShort 不初始化,长度无意义;所以局部变量strShort 尽量初始化空字符串使用。
另外strShort[1] := 'A';这样的赋值操作并不会改变strShort,Length的大小,strShort := 'A'这样的赋值语句才会改变strShort[0]的大小=1。
setlength方法能改变其现有字符长度,但不会改变所占字节大小,也不会改变长度外的内容。
 
ansiString:
strAnsi : ansiString;
strAnsi 类似一个动态字符数组(GBK,字符占1字节,中文占2字节),容量最大为2G,变量默认占一个指针的大小4字节(sizeof),可以用setlength方法设置字符容量,如:setlength(strAnsi,1024*1024)。
strAnsi 全局、局部变量都为空字符串,strAnsi[0] 不可访问,访问其元素strAnsi[i]时需要先对strAnsi 设置长度,或者直接赋值strAnsi :='123456';
setlength方法能改变其长度还有所占容量大小,舍弃的字节并不会初始化为#0。setlength(strAnsi,0)等于strAnsi :='';
 
widestring:
strWide : wideString;
strWide 与ansistring类似,但是所有字符都占2个字节(usc)。strWide[i]为widechar类型;sizeof大小为2字节,length为包含字符的个数(中英文占长度相同)。
 
array:
aryD : array of byte,动态数组aryD变量名是一个指针,指向第一个元素aryD[0]的地址,用setlength方法设置其长度,元素都是从下标0开始计数,最大长度为2G,对aryD做赋值操作只是改变他的指向。
和long string类型,都是采用引用计数的方法来管理内存,三种方法释放其内存,finalize(aryD)、setlength(aryD,0)、aryD :=nil;
 
aryS : array[0..10] of byte,静态数组aryS固定长度,不能用setlength改变长度;
全局变量会初始化为0,局部变量不初始化,@aryS为第一个元素的指针;
 
一维数组,形参类型为array of 作为参数传递时默认会当做值传递const,函数内部会复制一个副本,用Var保留字声明,参数会作为引用传递,类似指针,函数内部对其改变会影响到外部内容;
如果形参类型为自定义动态数组类型如:TDAry: array of byte;则传递时是指针传递,函数内改变会影响到函数外;
如果为自定义静态数组如:TSAry: array[1..10] of byte;则传递时是值传递,是一个备份,var可以传递引用;
多维数组参数传递时与一维类似;
 
 
 
 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
利用matlab求解方程组的解发布时间:2022-07-18
下一篇:
matlab求解二元一次方程组的解得表达式发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap