结构体(struct)

 结构体

1. 概念

结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合。

2. C语言中的结构体

在C语言中,结构体(struct)是复合数据类型的一种。同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型,成员一般用名字访问。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。

注意:在C语言中,结构体不能包含函数。

示例1:

 struct book
{
    int a;
    char b;
    double c;
} 
book t1, t2[20], *t3; 

/*此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
结构体的标签被命名为book,用book标签的结构体,另外声明了变量t1, t2[20], *t3;*/

示例2:

typedef struct
{
     int a;
     char b;
     double c; 
 } Simple2;
 Simple2 u1, u2[20], *u3;

/*可以用typedef创建新类型,此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c,结构体的标签被命名为Simple2,用Simple2作为类型声明新的结构体变量u1, u2[20], *u3
若去掉typedef则编译报错,error C2371: “Simple2”: 重定义;不同的基类型 */

示例3:

typedef struct Student
{
int a;
}Stu;

于是在声明变量的时候就可:Stu stu1;
如果没有typedef就必须用 struct Student stu1; 来声明
这里的Stu实际上就是struct Student的别名。

3. C++中的结构体

在C语言中,结构体不能包含函数。在面向对象的程序设计中,对象具有状态(属性)和行为,状态保存在成员变量中,行为通过成员方法(函数)来实现。C语言中的结构体只能描述一个对象的状态,不能描述一个对象的行为。在C++中,考虑到C语言到C++语言过渡的连续性,对结构体进行了扩展,C++的结构体可以包含函数,这样,C++的结构体也具有类的功能。

注意:在C++中,结构体可以包含函数。

示例1:

struct Student
{
int a;
};

//定义了结构体类型Student,声明变量时直接Student stu2

示例2:

struct Student
{
    int a;
}stu1;   //stu1是一个变量

typedef struct Student2
{
    int a;
}stu2;    //stu2是一个结构体类型
          //使用时可以直接访问stu1.a,但是stu2则必须先 stu2 s2;然后s2.a=10;

4.C++中结构体与类的区别(struct与class的区别)

最本质的一个区别就是默认的访问控制: struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的。

到底是用struct还是class,完全看个人的喜好,你可以将程序里所有的class全部替换成struct,它依旧可以很正常的运行。但我给出的最 好建议,还是:当你觉得你要做的更像是一种数据结构的话,那么用struct,如果你要做的更像是一种对象的话,那么用class。

  • 19
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值