当前位置:   article > 正文

结构体(struct)

结构体

 结构体

1. 概念

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

2. C语言中的结构体

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

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

示例1:

  1. struct book
  2. {
  3. int a;
  4. char b;
  5. double c;
  6. }
  7. book t1, t2[20], *t3;
  8. /*此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
  9. 结构体的标签被命名为book,用book标签的结构体,另外声明了变量t1, t2[20], *t3*/

示例2:

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

示例3:

  1. typedef struct Student
  2. {
  3. int a;
  4. }Stu;
  5. 于是在声明变量的时候就可:Stu stu1;
  6. 如果没有typedef就必须用 struct Student stu1; 来声明
  7. 这里的Stu实际上就是struct Student的别名。

3. C++中的结构体

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

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

示例1:

  1. struct Student
  2. {
  3. int a;
  4. };
  5. //定义了结构体类型Student,声明变量时直接Student stu2

示例2:

  1. struct Student
  2. {
  3. int a;
  4. }stu1; //stu1是一个变量
  5. typedef struct Student2
  6. {
  7. int a;
  8. }stu2; //stu2是一个结构体类型
  9. //使用时可以直接访问stu1.a,但是stu2则必须先 stu2 s2;然后s2.a=10;

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/142808
推荐阅读
相关标签
  

闽ICP备14008679号