Pointer ,pchar ,^char 之间的异同点,我现在越看书越迷糊

gwhdaxia 2005-03-23 04:32:04
希望大家不吝赐教
...全文
285 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
YiOnLine 2005-03-24
  • 打赏
  • 举报
回复
学习
happywww 2005-03-24
  • 打赏
  • 举报
回复
pointer = pchar = ^char
实际上都是一样的东西。不过逐个字节遍历内存PChar比较简单一些,可以直接用Inc(P)得到下一个地址,pointer只能用 P := Pointer(Integer(P) + 1), 麻烦
zhxfzhxf1 2005-03-23
  • 打赏
  • 举报
回复
Pointer ,pchar ,^char
相同点:都是指针(或者与指针相关)

不同点:
Pointer: 是无类型指针,可以指向任何内存地址;
pchar ,^char :指向字符
pchar: 通常是指向字符串,并且该字符串以\0结尾;
^char :指向字符变量,或者字符数组中的某一元素的地址,该字符数组不必须以\0结尾


pchar是C/C++中广泛使用的字符串类型;
在delphi中通常使用string;但调用API时,通常使用pchar.


关系:三者可以互相转换,因为本质上三者都是一个与integer长度相当的一块内存,其中存储着指向目标的地址,

如mosquitor() 所言"用户可以根据自己的需要将任何类型的指针数据强制转换成Pointer类型"

var a: Pointer;
b: integer;
pb: PInteger;
...
pb := ^b; // pb =@b; ??
a := pb;
后可以用PInteger(b)^来得到a的值;

chinaandys 2005-03-23
  • 打赏
  • 举报
回复
Pointer-----------------无类型指针


pchar--------------------指向char类型的一个指针. 是^char类型的一个别名

^char--------------------一个指向char类型的一个指针.
aloking 2005-03-23
  • 打赏
  • 举报
回复
<<參透>>一書, 關于這個問題 我翻了书 没找到
mosquitor 2005-03-23
  • 打赏
  • 举报
回复
pointer讲白了就是一个32位的数字,该数字表示内存中的一个地址,用户可以根据自己的需要将任何类型的指针数据强制转换成Pointer类型
PChar=^Char,所以Pchar是char类型的指针
所以^Char可以用Pchar来代替
aiirii 2005-03-23
  • 打赏
  • 举报
回复
<<參透>>一書, 關于這個問題, 寫得還不錯

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧