请问结构体成员能否是函数?
如题,比如下面代码:struct try
{
int i;
void abc(void);
char c;
}
这样是否合法?
----------------解决方案--------------------------------------------------------
好象不可以吧。结构体里面必须是属于变量吧。函数属于什么呢。
----------------解决方案--------------------------------------------------------
刚才网上搜下,看到下面代码:
#include <stdio.h>
typedef struct CStructure
{
int (*memberFunction)();
}CStructure;
int globalFunction()
{
printf("Member function of a struct in C\n");
return 0;
}
int main()
{
CStructure obj;
obj.memberFunction=globalFunction;
obj.memberFunction();
return 0;
}
说这个不是函数成员,,而是函数指针
因此,C的结构体不能包含真正的成员函数这是毫无疑问的。
看来问题清楚了.
----------------解决方案--------------------------------------------------------
不可以的,结构体是一个类型的框架,所以还是一个一般的类型,不可在其中用函数,但可以定义返回结构体型的函数
[此贴子已经被作者于2007-6-12 18:19:58编辑过]
----------------解决方案--------------------------------------------------------
下面是一段声明:
#include <stdio.h>
struct stu{
int a;
char b;
} x(int p);
main()
{
}
struct stu x(int p){
}
编译成功,不过要注意结构体名称不能省略(就那个stu)否则报错类型不匹配。具体函数如何返回我还没研究过,继续学习!!!!!!!!
----------------解决方案--------------------------------------------------------
你这好象不是结构体里面成员变量吧。只是赋予一个结构体名称。
----------------解决方案--------------------------------------------------------
答案肯定是
不行
至于为什么?
编译一下就知道了!
----------------解决方案--------------------------------------------------------