C语⾔中结构体变量私有化详解
背景介绍
操作系统: CentOS7.3.1611_x64
gcc版本:4.8.5
什么是结构体?
在C语⾔中,结构体(struct)指的是⼀种数据结构,是C语⾔中聚合数据类型(aggregate data type)的⼀类。结构体可以被声明为变量、指针或数组等,⽤以实现较复杂的数据结构。结构体同时也是⼀些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员⼀般⽤名字访问。c语言struct头文件
问题描述
C语⾔结构体定义中的变量默认是公有(Public)属性,如果实现成员变量的私有(Private)化?
解决⽅案
将结构体的定义放⼊源码件中实现,头⽂件只放声明。
⽐如有如下结构体(obj.h⽂件中定义):
struct Obj {
int id;
char *name;
};
typedef struct Obj Obj;
并定义如下变量:
Obj *o;
正常情况下,可以通过如下代码正常访问结构体中的变量:
printf("id : %d\n",o->id);
如果将结构体的定义放⼊源⽂件中,上述代码将会报如下错误:
error: dereferencing pointer to incomplete type
printf("id : %d\n",o->id);
如需外部访问,可通过添加相关接⼝实现,⽐如:
int get_obj_id(const Obj* o)
{
int ret = 0;
if(o)
{
ret = o.id;
}
return ret;
}
完整⽰例代码如下:
好,就这些了,希望对你有帮助。
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论