当前位置:编程学习 > Delphi >>

delphi 的指针、内存地址方面挺混乱的

C++中数据就是数据,取址就是该数据所在内存地址,结构很清晰,也很统一。 而delphi中create的对象就是一个指针,而基本数据却不是,对'a'(AnsiChar)取址,结果还是'a',而对4(Integer)取址结果却是内存地址,感觉乱七八糟,谁能解释解释?
追问:你想说明什么呢?
首先这个语句就没有对,sizeof返回的值不能给count;
然后sizeof是返回该数据所占的内存大小,即count的内存大小,跟count := @ivarcount;
完全没有关系
答案:我告诉你:
  加1和加2完全是由指针类型来确定的,指针类型如果是pansichar那么加1则是指向下一个字节的地址,如果指针类型是pwidechar则加1指向下两个字节位置。
  内存是一片连续的存储单元,以字节为单位,从内存中存取数据时计算机会根据不同类型大小去计算该取哪段数据给程序。
  比如一个指针指向 $10000的位置,如果你要取一个byte数据,那么系统会将
$10000处的内容给你。如果你要取一个integer型数据,那么系统会将$10000至$10003的内容给你。因为byte一个字节,integer是4个字节,其它等等都是这么个道理。
  再说这个数组,其实也是使用连续一段地址来储存的,array[0..100] of byte则在内存中是@array[0]之后的边续100个byte
如果将首地址加1则指向第二个元素,加2则指向第三个元素,以此类推。。。。
其他:var  
   ivarcount : integer;
   count      :    pbyte;
begin
   count := @ivarcount;
   count := sizeof(count)
end;
   count = 4 不知道你对Delphi 了解多少, 不知道你是如何取地址的? 关注中~~ 在其他机器测试是否有问题,如果没有问题,再确认服务器端写cookie正常

上一个:delphi高手也不知道的问题
下一个:delphi word 合并单元格 最好能给所有的代码 不要简略!最好是自己试过的代码!!

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,