字符串问题 ( 积分: 10 )

  • 主题发起人 主题发起人 那年黄梅花开
  • 开始时间 开始时间

那年黄梅花开

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.FormCreate(Sender: TObject);
var
s: string[9];
begin
s:= 'goodstudy';
edit1.text:= inttostr(sizeof(s));
end;
为何sizeOf的结果是10
 
s[0]用来记录短串的长度
串的实质内容是从s[1]开始的
 
对,是10,没有错. s[0] 保存的是字符串的长度的长度 s[1]='g' s[2]='o' ....s[10]='y'
 
谢谢回答,但有点不大明白,如下
procedure TForm1.FormCreate(Sender: TObject);
var
s: string;
begin
s:= 'goodstudy';
edit1.text:= inttostr(sizeof(s));
end;
那为何sizeOf的结果是4?
length(s)的结果是9
 
sizeof(s) 包含一个结束符#0
 
不知楼主有何用意啊
 
s:string;
它是不定长的,是一个指针,指针占4字节。
但串的长度是9。

s: string[9];
它是定长的。
 
好像SIZEOF 返回一个字符串变量所占字节数吧在内存中(可能有最小要求吧)
 
不解,听课
 
你理解错了.在delphi中的string和结构,数组是不一样的.

sizeof()不能用在它身上,只能用在数组 record结构体等变量上
你想知道长度就是用length()
 
呵呵,谢谢大家,我的目的不是为了求长度,而是想知道为什么
sizeof(string[9])=10,
sizeof(string)=4
 
我已经说的很清楚了
string[9]是定长的在编译期就分配了内存
string是不定长的,在运行期动态分配内存,因为它不定长,它只是一个指针,可以指向任何长度的内存区。
 
谢谢大家的参与
 
后退
顶部