C语言 结构体相关知识点

一、结构体基本概念

       结构体将不同类型的数据进行整体封装,根据需求由用户来设定。这些成员之间都是有联系的,比如表示一个人的姓名、年龄性别等信息。如果它们被定义成独立的量,就无法说明它们之间的联系。  

       声明一个结构体类型的一般形式为:

struct Student
{
   char id[8];
   char name[8];
   char sex[4];
   int age;
};

        其中,struct为结构体关键字,Student为结构体名,成员名的命名规则与变量类似。该结构体开辟的空间为26字节。

        定义结构体变量时,.c文件和.cpp文件都支持以下形式:

struct Student s1;

         进行初始化时,用以下方式进行:

Student s1={"2010222","qiao","fe",18}

二、结构体中需注意的问题 

 1、同类型的结构体变量可以相互赋值,和内置类型同理。

struct Student stu1={"20201","xiaohm","man",19};
struct Student stu2=stu1;
struct Student stu3;
stu3=stu1;

注意:设置同属性的不同类型的结构体变量,是不能相互赋值的。强转也不允许赋值。 

 2、结构体的重新解释 

struct Student stud1={"202001","xiaohm","man",19};
struct Student *sp=&stud1;

struct Emp a={"201008","lihua",23,8700};
struct Student *ep=&a;

ep=(struct Emp*)sp;

一般不允许这样的结构转换,对内存识别失去了原有的意义 

 3、结构体两种不同的设计方案(数组与指针)

 4、结构体的嵌套问题

不同结构体之间可以相互嵌套 

 5、结构体不能定义它自身,但能定义指针

不能够编译通过的原因:形成了无限嵌套,无法计算结构体大小。

指针类型大小4或8,结构体大小可计算。这样设置与数据结构中的链式结构有关。 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值