请各位大侠看看这个问题,谢谢!(0分)

  • 主题发起人 主题发起人 awfigsk
  • 开始时间 开始时间
A

awfigsk

Unregistered / Unconfirmed
GUEST, unregistred user!
type Func = function(X: Integer): Integer;
var
F: Func;
P: Pointer;
N: Integer;
可以有如下的赋值语句:
F := Func(P)
{ 将P中的程序型值赋给F }
Func(P) := F
{ 将F中的程序型值赋给P }
P := @F
{ 将F的指针赋给P }
我想请问[red]将P中的程序型值赋给F[/red]这句话中,P中的程序型值是个什么概念?
[red]将F中的程序型值赋给P[/red],F中的程序型值是个什么概念?
F本身是个函数指针吗?并且是指向function(X: Integer): Integer;的吗?
那么P:=@F;是将F的地址给指针P是这样吗?如果调用P的话,直接写成:
N:=P(N);这样可以吗?
 
将F中的程序型值赋给P
——这句话根本不通嘛。将函数指针F的值(也就是F所指向的Func类型的函数的入口地址)
赋给被强制转化为Func类型的P。

F本身是个函数指针
是的

将F的指针赋给P
不对,应该是“将F的地址赋给P”。虽然F本身是一种特殊的指针,但是作为一个内存对象,
它是有地址的。

N:=P(N);这样可以吗?
不可以。虽然即使P和F的内容相同,编译器仍然会认为这是语法错误。因该先将P强制转换
为Func类型: N:=Func(P)(N);
 
接受答案了.
 
后退
顶部