delphi指针类型
typebuffer=string[255];ptr=^buffer;varb1:buffer;b2:ptr;b1:='zhang';b2^:='zhang';b2是一个...
type
buffer=string[255];
ptr=^buffer;
var
b1:buffer;
b2:ptr;
b1:='zhang';
b2^:='zhang';
b2是一个4B的指针变量(为什么是4个字节?),而b2^则是一个256B的字符串变量(为什么是256个字节)。
前者是静态的,存放的是动态变量的内存首地址;(一个指针变量存储着它所指向的动态变量的地址,这个我知道,但为什么这里b2是静态的?)
后者是动态的,存放的是动态变量中的数据(为什么这里又是动态的呢?)
来人啊
分类达人些:阳光上的桥、yeahrahxephon、biznow、wfhy、翼帆
其他的隐秘这高手些。
这道题,就真的这么难吗?
有点意思 展开
buffer=string[255];
ptr=^buffer;
var
b1:buffer;
b2:ptr;
b1:='zhang';
b2^:='zhang';
b2是一个4B的指针变量(为什么是4个字节?),而b2^则是一个256B的字符串变量(为什么是256个字节)。
前者是静态的,存放的是动态变量的内存首地址;(一个指针变量存储着它所指向的动态变量的地址,这个我知道,但为什么这里b2是静态的?)
后者是动态的,存放的是动态变量中的数据(为什么这里又是动态的呢?)
来人啊
分类达人些:阳光上的桥、yeahrahxephon、biznow、wfhy、翼帆
其他的隐秘这高手些。
这道题,就真的这么难吗?
有点意思 展开
2个回答
展开全部
4个字节是因为我们现在使用的操作系统都是32位(每个字节8位)的。如果你使用64位的机器和操作系统,每个指针的大小就是8个byte了。
256个字节是因为你声明了255,但这个数字实际上表示0..255,你数一下是不是一共256个?
你举的这两个例子都是静态的,没有动态的,只不过一个用了指针,一个没有用。如果是动态的要这么写
procedure TForm1.Button1Click(Sender: TObject);
var
B3:PChar;
begin
GetMem(B3,256);
try
StrCopy(B3,'zhang');
ShowMessage(B3);
finally
FreeMem(B3);
end;
end;
256个字节是因为你声明了255,但这个数字实际上表示0..255,你数一下是不是一共256个?
你举的这两个例子都是静态的,没有动态的,只不过一个用了指针,一个没有用。如果是动态的要这么写
procedure TForm1.Button1Click(Sender: TObject);
var
B3:PChar;
begin
GetMem(B3,256);
try
StrCopy(B3,'zhang');
ShowMessage(B3);
finally
FreeMem(B3);
end;
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询