标题:请问结构体成员能否是函数?
只看楼主
yang667455
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-5-13
 问题点数:0 回复次数:6 
请问结构体成员能否是函数?
如题,比如下面代码:

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

这样是否合法?
搜索更多相关主题的帖子: 结构体 函数 成员 void int 
2007-06-12 12:03
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
得分:0 
好象不可以吧。结构体里面必须是属于变量吧。函数属于什么呢。

深山苦学C语言,终年不见外面世界。
2007-06-12 12:06
yang667455
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-5-13
得分:0 

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

#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-06-12 12:10
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
得分:0 

不可以的,结构体是一个类型的框架,所以还是一个一般的类型,不可在其中用函数,但可以定义返回结构体型的函数

[此贴子已经被作者于2007-6-12 18:19:58编辑过]


偶是菜鸟鸟偶惧WHO?!!!!
2007-06-12 12:31
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
得分:0 
下面是一段声明:
#include <stdio.h>
struct stu{
int a;
char b;
} x(int p);
main()
{
}
struct stu x(int p){
}
编译成功,不过要注意结构体名称不能省略(就那个stu)否则报错类型不匹配。具体函数如何返回我还没研究过,继续学习!!!!!!!!

偶是菜鸟鸟偶惧WHO?!!!!
2007-06-12 12:49
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
得分:0 

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


深山苦学C语言,终年不见外面世界。
2007-06-12 13:57
三笔
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-6-12
得分:0 

答案肯定是
不行

至于为什么?

编译一下就知道了!

2007-06-12 20:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-146760-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043817 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved