首先在这一章我们要讲的是结构与联合。
在平时,我们往往需要对数据进行成组的形式进行存储和访问,所以,在这里C提供了两种可以存储多种数据的数据类型:数组和结构。
1.关于结构体的基础知识
数组,这是一个同类型元素的集合,而结构体,可以存储不同类型的元素,并且这两个类型的访问方式也是不一样的,数组是通过下标的形式进行访问的,而结构体是通过名字来访问。所以,一个结构变量在表达式中使用时,他并不被替换成一个指针。
结构体的组成:
对于结构体,我们先要认清其中的各种组成
struct A
{
int a ;
char b ;
};
首先在这个里面
在这个里面,我们要清楚,A是这个结构体的标签,里面的a,b是这个结构体的成员,在这里我们没有给这个结构体提供变量,所以并没有创建变量。想要创建变量,就可以这样来写,struct A x
;在这里,x是一个类型为struct A类型的变量。
另外,在写程序中,结构体我们会更多的和typedef进行搭配使用。
例:
typedef struct BiTNode
{
datatype data ;
struct BiTNode *lchild , * rchild;
} BiTNode, *BiTree;
在这里对这个结构体类型进行重定义,在以后BiTNode
就相当于struct BiTNode
,而BiTree就相当于struct BiTNode *
。当初学习数据结构的时候,记得无数人都因为这个疑问产生过疑惑。所以在书写链表等数据结构时,推荐大家都使用这种方式书写代码,另外,在这提一个技巧,我们可以把结构体放到头文件中,然后源文件只需要使用预处理指令就可以把头文件包含进来了。
其实这个就typedef int datatype
是一样的。用datatype把int给替代了。
结构体就是类的一个过渡。
访问结构体成员,需要结构体变量的名字,在对成员进行引用。
结构体的访问:
- 1:直接访问
这种方式被称为是通过点操作符(.)进行访问,点操作符,接受两个操作数,它的左边是结构变量的名字,右边是需要访问的成员的名字。
struct A
{
int a ;
char b ;
};
int main()
{
struct A x;
x.a =5;