1.指针能否进行加减的操作?类似c语言中的p+1,p++之类的如,p为字节指针(该如何定义?)p指向某个分配的内存(该如何分配,如何释放?)的某个位置能否加减p的值,使得其指向的内容为其他的?
2.指针指向某个类的的对象实例该如何做,该如何调用该实例的方法?与引用的实例有什么区别?如,有个类,T,其对象,obj1,obj2,已经创建来
p为T类型的指针
p:^T;
能否用p指向obj1,obj2?
^p=obj1 ?还是^p=@obj1?这样使用与
t:T;
t=obj1,t=obj2有什么区别假设T有方法DoSomeThing
那么通过指针,能否调用DoSomeThing?如何调用?3.在函数间传递指针该注意什么问题
4.指针的优点在哪里?
2.p:=@obj1;
p:=@obj2;
调用方法:p^.方法名;p^和哦obj1或obj2没区别。优点当然是灵活性,但有时会有危险
2.都不行,p=@obj1反问:你能理解什么是指针吗?那3,4自己去体会
p1, p2: ^Integer;(p1 + 1)^ := 10; //错误
p2 := p1 + 1; //正确
p2^ := 10; //正确2、对象变量本身就是一个指针,所以个以直接赋值,如var
p: Pointer;p := Form1;使用时只要将p强制类型转换,如TForm1(p)
1、当p为PChar时,可以直接加减,但为其他类型指针时,须强制类型转换
p2 := Pointer(Integer(p1) + 1);
可以inc(p,10)
不行?“只能用函数inc(p)一个单位”???没试过,先去试试
var p:PByte; GetMem(p,n);
Inc(p);
Dec(p);
FreeMem(p);
2。类已经是指针类型,不需要 var p:^T。
如果一定要这样,也是可以的。
var
Form1:TForm;
p:^TForm;
p:=@Form1;
TForm(p^).Close; 还不如:
var
Form1:TForm;
p:Pointer;
p:=Form1;
TForm(p).Close;