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

C++中数据就是数据,取址就是该数据所在内存地址,结构很清晰,也很统一。
而delphi中create的对象就是一个指针,而基本数据却不是,对'a'(AnsiChar)取址,结果还是'a',而对4(Integer)取址结果却是内存地址,感觉乱七八糟,谁能解释解释?

我告诉你:
加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则指向第三个元素,以此类推。。。。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-21
var
ivarcount : integer;
count : pbyte;
begin
count := @ivarcount;
count := sizeof(count)
end;
count = 4追问

你想说明什么呢?
首先这个语句就没有对,sizeof返回的值不能给count;
然后sizeof是返回该数据所占的内存大小,即count的内存大小,跟count := @ivarcount;
完全没有关系

第2个回答  2011-09-22
不知道你对Delphi 了解多少, 不知道你是如何取地址的?
第3个回答  2011-09-23
关注中~~
第4个回答  2011-10-02
在其他机器测试是否有问题,如果没有问题,再确认服务器端写cookie正常
相似回答
大家正在搜