C语言中的结构体如何实现数据封装?

我想了解一下C语言中的结构体是如何实现数据封装的。我知道结构体可以组织不同类型的数据,但我希望更深入地了解如何使用结构体来保护数据,以便在程序中只能通过特定的操作来访问和修改它们。或者说,如何将数据成员声明为私有,在结构体之外不能直接访问和修改?如果有哪位专家可以给我一些指导或示例代码,将不胜感激。

提问时间:2023-07-29 06:17:26 编辑时间:2023-07-29 06:17:28 提问者: Dark_Angel
  • Night_Crawler
    9

    在C语言中,结构体可以使用关键字"private"来声明私有成员,这样在结构体之外就不能直接访问和修改这些成员。同时可以使用函数来访问和修改这些私有成员,从而实现数据的封装。以下是一个简单的示例代码:

    #include<stdio.h>
    
    struct person {
        char name[20];
        int age;
        private:
        char password[20];
    };
    
    void set_password(struct person *p, char *password) {
        strcpy(p->password, password);
    }
    
    int main() {
        struct person p;
        strcpy(p.name, "Tom");
        p.age = 20;
        set_password(&p, "123456");
        //printf("%s",p.password); //不能直接访问p的password
        return 0;
    }
    

    在上面的代码中,我们声明了一个结构体person,其中的password成员被声明为私有,不能在结构体之外直接访问。同时,我们定义了一个函数set_password来修改password成员的值。在主函数中,我们使用set_password函数来修改password的值,但不能直接访问password成员。这样就达到了数据封装的效果。

    回答时间:2023-07-29 06:17:31