C和指针—结构体和联合

本文详细介绍了C语言中的结构体和联合基础知识,包括结构体的组成、访问方式、自引用、不完整声明和初始化。同时讨论了结构体在内存分配、作为参数传递时的问题,以及位段和联合的特殊用法,对于理解和使用C语言结构体有很好的指导作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先在这一章我们要讲的是结构与联合。
在平时,我们往往需要对数据进行成组的形式进行存储和访问,所以,在这里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;
                 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值