cumtgao 发表于 2011-8-11 11:52:46

为什么很多菜单程序都要这样写呢?

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?

cumtgao 发表于 2011-8-11 11:54:45

我在测试时 不论用
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,

貌似程序都是正常的

JSXA 发表于 2011-8-11 12:17:38

是的 都是一样的
都是地址

ad-losophy 发表于 2011-8-11 12:30:21

都是地址,我试过也是这样。

cumtgao 发表于 2011-8-11 12:51:10

额 。。。。难道fun0和*fun0都表示函数的入口地址?

bingshuihuo888 发表于 2011-8-11 13:40:42

记号。

cumtgao 发表于 2011-8-11 13:46:29

呃。。。都是教材害人很多教材里都是写的*fun这种方式,而在讲解函数指针时又是current_operation=fun。

wy2000 发表于 2011-8-11 14:41:55

mark

kenluo 发表于 2011-8-11 15:06:52

顶一下,让高手分析一下

xcodes 发表于 2011-8-11 15:29:14

2楼已经分析过了

xrwf_2009 发表于 2011-8-11 16:42:32

记号。

oldmen 发表于 2011-8-11 21:28:35

几号

jinjin_xia 发表于 2012-12-11 15:58:36

记号                  

30zero 发表于 2012-12-19 20:05:07

我来标记一下!

jeffernpeng 发表于 2013-2-21 10:12:43

mark 学习

mzoge1990 发表于 2013-2-21 18:59:30

函数名就是指向函数的地址。

barryliu 发表于 2013-2-27 01:30:23

如果真是教材上这么写的,那只能说明中国的教育又达新阶段了。
不仅*fun使用“正常”,&fun也“正常”,很佩服它能容忍这种低级错误,编译器的开发者真大度。当然,不保证所有的编译器都行,有些编译器看到有人干这种蠢事是有脾气的

hfjydq 发表于 2014-5-15 15:34:09

barryliu 发表于 2013-2-27 01:30
如果真是教材上这么写的,那只能说明中国的教育又达新阶段了。
不仅*fun使用“正常”,&fun也“正常”,很 ...

笑死我了   说的很好

atonghua 发表于 2014-5-15 16:09:40

标记 标记一下之前用的几个while

lswhome 发表于 2014-5-15 16:50:02

22楼的头像貌似是PUBWIN的锁屏画面。。。

bangbangji 发表于 2014-5-15 18:36:24

的确是这样,有很多编译器 &i 和 &&i 或者前面加更多的 & 取到的地址值是一样的,你可以试试{:loveliness:}

mafeimafei 发表于 2014-11-10 20:59:07

学习了。
页: [1]
查看完整版本: 为什么很多菜单程序都要这样写呢?