在结构中定义函数

我们可以用C编程语言在结构中定义函数吗?

不,因为function不是数据。 但是你可以在结构中定义函数指针。

struct foo { int a; void (*workwithit)(struct foo *); } 

你不能真正在C中声明一个结构体内的东西。这不是C ++或任何其他的OO语言,一个对象封装了某种范围。

C结构是非常简单的对象,它只是用于pipe理一块内存的语法糖。 当你创build新的struct“instance”时, struct A a; ,编译器只是根据其大小保留堆栈空间,然后当你做一个a.member ,编译器知道成员的偏移量,所以它跳转到该成员的&a +偏移量。 这些偏移量通常不只是前一个成员的大小的总和,因为编译器通常会在结构中添加一些填充位,使其更好地对准内存。

希望它有一点帮助。 你显然期望从C结构稍微太多:-)

不,你不能在C程序中的结构内部的函数。 我写了一个单一的代码,并保存为.c和.cpp。 .cpp文件符合并按预期工作,但.c文件甚至不编译。

这里是供您参考的代码。 将它保存为.cpp,然后运行它。 然后保存与.c相同的代码并编译它。 你会得到一个编译错误。

 #include <stdio.h> struct C { void Test(int value) { static int var = 0; if (var == value) printf("var == value\n"); else printf("var != value\n"); var = value; } }; int main() { C c1; C c2; c1.Test(100); c2.Test(100); int ii; scanf("%d",&ii); } 

没有。

你可以在结构体中使用函数指针,但是这与你所得到的一样。

不,你不能。 结构只能包含里面的variables,在结构中存储函数指针可以给你想要的结果。

,你不能在C程序中的结构体中定义函数,但是如果你的文件的扩展名是.cpp( 不是C ),你可以使用类的成员函数,但是这些函数的默认修饰符是“public”类)。

阅读这些链接了解更多关于结构的信息一个好的链接 , 另一个好的链接 , 一个更好的链接

作为C ++中的惯例, 用于存储函数和variables,结构 仅用于存储信息(即数据)

不,但你可以在C ++结构!