为什么很多菜单程序都要这样写呢?
typedef struct{
uchar current;//当前菜单索引
uchar up; //向上
uchar down; //向下
uchar enter;//进入
void (*current_operation)(); //当前菜单执行的函数
} key_table;
key_table code table=
{
{0,24,8,1,(*fun0)}, //0//第一层,显示[语言],图片,说明,返回
{1,7,3,2,(*fun1)},//1-0按回车,进第二层,显示[英语],法语,中文,返回
{2,2,2,1,(*fun2)},//2-1 >enter>guiyang is the capital of guizhou,
如上:在菜单结构体中定义的是一个函数指针,理应指向函数入口,可是我看很多程序中在写结构体变量时都采用*fun()这种方式,而不是fun? 我在测试时 不论用
key_table code table=
{
{0,24,8,1,(*fun0)}, //0//第一层,显示[语言],图片,说明,返回
{1,7,3,2,(*fun1)},//1-0按回车,进第二层,显示[英语],法语,中文,返回
{2,2,2,1,(*fun2)},//2-1 >enter>guiyang is the capital of guizhou,
还是用
key_table code table=
{
{0,24,8,1,(fun0)}, //0//第一层,显示[语言],图片,说明,返回
{1,7,3,2,(fun1)},//1-0按回车,进第二层,显示[英语],法语,中文,返回
{2,2,2,1,(fun2)},//2-1 >enter>guiyang is the capital of guizhou,
貌似程序都是正常的 是的 都是一样的
都是地址 都是地址,我试过也是这样。 额 。。。。难道fun0和*fun0都表示函数的入口地址? 记号。 呃。。。都是教材害人很多教材里都是写的*fun这种方式,而在讲解函数指针时又是current_operation=fun。 mark 顶一下,让高手分析一下 2楼已经分析过了 记号。 几号 记号 我来标记一下! mark 学习
函数名就是指向函数的地址。 如果真是教材上这么写的,那只能说明中国的教育又达新阶段了。
不仅*fun使用“正常”,&fun也“正常”,很佩服它能容忍这种低级错误,编译器的开发者真大度。当然,不保证所有的编译器都行,有些编译器看到有人干这种蠢事是有脾气的 barryliu 发表于 2013-2-27 01:30
如果真是教材上这么写的,那只能说明中国的教育又达新阶段了。
不仅*fun使用“正常”,&fun也“正常”,很 ...
笑死我了 说的很好 标记 标记一下之前用的几个while 22楼的头像貌似是PUBWIN的锁屏画面。。。 的确是这样,有很多编译器 &i 和 &&i 或者前面加更多的 & 取到的地址值是一样的,你可以试试{:loveliness:} 学习了。
页:
[1]