函数指针问题

kgliu 2003-12-12 10:52:19
问题未解决,重发一遍,望各位不吝赐教

有一系列函数:fa,fb,fc.....fn.
假设param从a,b,c....n中取值,任意给定一个param值,怎样找到它对应的函数fparam?不用循环。
面向对象的多态性好象说明了这个问题,是不是我也不确定,很久没与这方面打过交道了。
请大家指教指教。
...全文
52 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kgliu 2003-12-15
  • 打赏
  • 举报
回复
谢谢二位的解答。
很土 2003-12-13
  • 打赏
  • 举报
回复
可以构造 Hash 函数, 建立 Hash Table, 若函数构造合理的话可以一次就找到目标, 所以解决方法的关键是如何互斥, 根据下标就可以计算出目标值.
lxpbuaa 2003-12-12
  • 打赏
  • 举报
回复
如果这一系列函数的参数是相同的,则可以,否则不能。比如:

type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TProc = procedure(X: Integer); //定义下列一些函数/过程的类型TProc
procedure fa(a: Integer); //一系列函数/过程
procedure fb(b: Integer);


var
Form1: TForm1;

implementation

var
Procs: Array of TProc; //一个数组存放这一些函数的指针

{$R *.dfm}

procedure fa(a: Integer);
begin
ShowMessage(IntToStr(a));
end;

procedure fb(b: Integer);
begin
ShowMessage(IntToStr(b));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
//初始化指针数组
SetLength(Procs, 2);
Procs[0] := fa;
Procs[1] := fb;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
param: Integer;
begin
//通过param调用响应的函数/过程
param := 0;
Procs[param](param);
end;

end.

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
内容概要:本文档是一份关于开发经典小游戏“贪吃蛇”的保姆级毕业设计指导文档,涵盖从游戏规则、功能设计、技术选型到核心代码实现的完整流程。文档以Python + Pygame为技术栈,详细讲解了游戏初始化、蛇的移动逻辑、食物生成、碰撞检测、计分与等级系统、键盘控制及主循环渲染等核心模块,并提供了完整的项目结构和源码示例。采用状态机管理游戏状态,使用列表模拟链表结构存储蛇身,结合方向缓冲机制优化操作体验,同时引入难度递增机制提升可玩性。文末还列举了飞机大战、扫雷、五子棋等同类课题作为拓展参考。; 适合人群:具备一定编程基础、正在进行毕业设计或课程设计的学生,尤其是对游戏开发感兴趣的初级开发者。; 使用场景及目标:①帮助学生独立完成一个功能完整、结构清晰的小游戏项目,用于毕业答辩或课程展示;②深入理解事件驱动编程、状态管理、碰撞检测、定时刷新等基础编程概念;③掌握Python + Pygame开发2D小游戏的核心技能,并具备二次开发与功能拓展能力。; 阅读建议:建议读者按照“规则→设计→代码→运行”的顺序逐步学习,动手实践每个模块并调试代码,重点关注方向缓冲、状态机、食物生成算法等设计细节,同时可尝试实现文末提出的拓展功能以增强项目亮点。

5,943

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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