指针就是就是执行内存地址的一个链接,指针本身不存储数据。
指针的 *** 作就是指向地址和取出地址内容
改变指针指向不会改变地址内容
反正我是这么理解不知道对不对啊,简单明了
编译通得过,Pointer,pByte,Cardinal都可以直接用,p开头的一般是一些指针类。p:Pointer :定义P为一般性通用的指针,可以作为任何类型数据的指针
tb1:=pByte(p)^把p强制转换为字节指针(它所指向的数据仅占一个字节),并把指针地址所指向的内容(Byte类型)传给tb1
tb2:=pByte(Ptr(Cardinal(p)+1))^把P指针的地址转换为一个无符号整数,并且把这个整数加1,然后再转换为指针,再转换为字节指针,再把内容传给tb2
tb3:=pByte(Ptr(Cardinal(p)+2))^原理同上
tb4:=pByte(Ptr(Cardinal(p)+3))^
pByte(p)^:=tb4把p强制转换为字节指针,并把指针地址所指向的地方放入TB4
pByte(Ptr(Cardinal(p)+1))^:=tb3原理同上
pByte(Ptr(Cardinal(p)+2))^:=tb2
pByte(Ptr(Cardinal(p)+3))^:=tb1
整个句子看下来,就是把P所指向连续四个字节的内存信息内容刚好反转过来,
比如:
地址:数据
[p+0]:0A
[p+1]:0B
[p+2]:0C
[p+3]:0D
现在:
[p+0]:0D
[p+1]:0C
[p+2]:0B
[p+3]:0A
只要这样就可以了typePint
=
^integer
PPint
=
^PintPPint就是integer指针的指针其他的一样.delphi中使用指针必须先定义类型,否则类型不相容比如i:
^integerk:
^integeri与k的类型是不相容的必须这样i:
Pintk:
Pint
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)