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语言中没有类的概念,但是可以通过结构体和函数指针来模拟类和成员函数的功能。

posted @ 2023-03-29 16:55  rincloud  阅读(108)  评论(0)    收藏  举报