c语言知识
C语言结构体中可以包含函数,这种结构体被称为函数指针结构体。
函数指针结构体中的函数成员可以是普通函数、静态函数或者成员函数。
函数指针结构体可以用来实现面向对象的编程思想,通过定义一个结构体来封装数据和函数,来实现数据的封装和函数的复用。以下是一个函数指针结构体的示例代码:
plaintext
Copy code
#include <stdio.h>
struct person {
char name[20];
int age;
void (*say_hello)();
};
void say_hello() {
printf("Hello!\n");
}
int main() {
struct person p;
p.say_hello = say_hello;
p.say_hello();
return 0;
}
在上面的代码中,我们定义了一个名为person的结构体,其中包含了一个名为say_hello的函数指针成员。在程序中,我们定义了一个person类型的变量p,并将p的say_hello成员赋值为函数say_hello。最后,通过调用p的say_hello函数指针成员,实现了函数的调用。
C语言中函数分为普通函数、静态函数或者成员函数。
1.普通函数:指没有被定义在结构体或类中的函数,它可以直接被调用。例如:main函数就是一个普通函数。
2.静态函数:指被定义在函数内部,只在当前文件中可见的函数。静态函数可以防止函数名被其他文件中的函数所占用,从而避免函数名冲突的问题。静态函数的定义前面加上static关键字即可。例如:
static void test() {
// do something
}
3成员函数:指被定义在类中的函数,它只能通过类的实例来调用。成员函数可以访问类的成员变量,并且可以通过this指针来访问当前实例的成员变量。例如:
struct person {
char name[20];
int age;
void say_hello() {
printf("Hello, my name is %s, I'm %d years old.\n", name, age);
}
};
int main() {
struct person p;
strcpy(p.name, "Tom");
p.age = 20;
p.say_hello(); // 调用成员函数
return 0;
}
注意,在C语言中没有类的概念,但是可以通过结构体和函数指针来模拟类和成员函数的功能。

浙公网安备 33010602011771号