在结构中定义函数
我们可以用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 ++结构!