赞
踩
结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合。
在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的别名。
在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;
最本质的一个区别就是默认的访问控制: struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的。
到底是用struct还是class,完全看个人的喜好,你可以将程序里所有的class全部替换成struct,它依旧可以很正常的运行。但我给出的最 好建议,还是:当你觉得你要做的更像是一种数据结构的话,那么用struct,如果你要做的更像是一种对象的话,那么用class。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。