当前位置: 代码迷 >> C语言 >> 请问结构体成员能否是函数?
  详细解决方案

请问结构体成员能否是函数?

热度:334   发布时间:2007-06-12 12:03:17.0
请问结构体成员能否是函数?
如题,比如下面代码:

struct try
{
int i;
void abc(void);
char c;
}

这样是否合法?
搜索更多相关的解决方案: 结构体  函数  成员  void  int  

----------------解决方案--------------------------------------------------------
好象不可以吧。结构体里面必须是属于变量吧。函数属于什么呢。
----------------解决方案--------------------------------------------------------

刚才网上搜下,看到下面代码:

#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)否则报错类型不匹配。具体函数如何返回我还没研究过,继续学习!!!!!!!!

----------------解决方案--------------------------------------------------------

你这好象不是结构体里面成员变量吧。只是赋予一个结构体名称。


----------------解决方案--------------------------------------------------------

答案肯定是
不行

至于为什么?

编译一下就知道了!


----------------解决方案--------------------------------------------------------
  相关解决方案