主题:[讨论]求助:(*step)()看到那位朋友的贴子发现的问题
#include<stdio.h>
struct abc
{int (*step)(abc a,int b);
char *chr;
}a_ok;
void main()
{int step_ok(abc a,int b);
abc *ok;
int (*step_lnk)(abc a,int b);
ok->step=step_ok;
a_ok.step=step_ok;
step_lnk=step_ok;
a_ok.chr="abcdef......";
ok->step(a_ok,123); /*但a_ok.(*step)(a_ok,123);这样编译会错误,用的borlandc3.1,谭浩强的C语言程序设计中说调用函数要(*step)(a_ok,123),怎么在结构中不成立,下面在main()中这样调用就行,step(a_ok,123)也行,为什么啊?*/
a_ok.step(a_ok,123);
step_lnk(a_ok,123);
(*step_lnk)(a_ok,123);
}
int step_ok(abc a,int b)
{printf("%s\n",a.chr);
printf("b=%d\n",b);
return 0;}
用borlandc3.1编译通过,运行正常,但上面问题怎么解释?struct abc
{int (*step)(abc a,int b); 我还以为会出错,哪来的abc,怎么成功编译了?
char *chr;
}a_ok;
struct abc
{int (*step)(abc a,int b);
char *chr;
}a_ok;
void main()
{int step_ok(abc a,int b);
abc *ok;
int (*step_lnk)(abc a,int b);
ok->step=step_ok;
a_ok.step=step_ok;
step_lnk=step_ok;
a_ok.chr="abcdef......";
ok->step(a_ok,123); /*但a_ok.(*step)(a_ok,123);这样编译会错误,用的borlandc3.1,谭浩强的C语言程序设计中说调用函数要(*step)(a_ok,123),怎么在结构中不成立,下面在main()中这样调用就行,step(a_ok,123)也行,为什么啊?*/
a_ok.step(a_ok,123);
step_lnk(a_ok,123);
(*step_lnk)(a_ok,123);
}
int step_ok(abc a,int b)
{printf("%s\n",a.chr);
printf("b=%d\n",b);
return 0;}
用borlandc3.1编译通过,运行正常,但上面问题怎么解释?struct abc
{int (*step)(abc a,int b); 我还以为会出错,哪来的abc,怎么成功编译了?
char *chr;
}a_ok;