结构体学习笔记

目录

#什么是结构体 

#结构体及结构体变量的定义和使用 

##结构体变量的定义和使用

##访问规则

##赋初值的方法

#typedef使用

#结构体数组

#结构体内存计算  

#指针与结构体


#什么是结构体 

   结构体是一种由我们自己定义的_数据类型_  (比如说与int类型,char类型 )

    结构体变量是数据类型为我们定义的结构体类型的变量(先定义结构体类型在定义结构体变量)

#结构体及结构体变量的定义和使用 

  ##结构体的定义##

 struct 结构体名

{
    成员1;//(形如)int a;
    成员2; 
    ... 
}; //分号结尾

注意:1.结构体类型只是规定构成这种数据类型的模型,系统编译时不分配内存空间(占据内存的是变量),所以不能对结构体类型取数据或者赋值(就像你会给int赋值吗?)。  

        2.成员数据类型可以不同。  

        3. 定义位置会影响使用位置。 

        4.声明类型时不能给成员赋初值。  

##结构体变量的定义和使用

        法1:分开定义,先声明后定义

                               

        法2:同时定义

        

        法3:与2类似,省略结构体名(只能定义一次,不能再定义结构体变量了)

##访问规则

        1.普通变量“.”访问成员(形如结构体变量.成员名)

        2.结构体指针变量用“->”访问成员

##赋初值的方法

struct student

{

       int h;

       int w;

       float rate;  

};

struct student tom={168,50,18.0};

  单独赋值:

tom.h=168;

结构体类型中有数组时:

struct student

{

       int n;

       int book[5];//书籍被借阅次数

       float ave;

};

struct student tom={5,{10,21},15.5};

struct student tom={5,10,21,15.5};//15.5赋给的变量不同前者给ave,后者给book[2];

#typedef使用

        *  相当于给类型取小名,原来的类型名仍能使用(类型已经存在)

        *  对结构体的运用

typedef int TYPE;
TYPE a;//等价于int a;
typedef struct student
{
    int a;
    int b;
}STU;//STU是struct sudent的别名;
STU tom;//等价于struct student tom;

#结构体数组

        ## 语法:struct 结构体名 数组名[数组长度];(类型名 数组名[长度])

typedef struct student
{
    int a;
    int b;
}STU;//STU是struct sudent的别名;
int a[36];
STU class[36];//与其他类型数组的定义是相似的

#结构体内存计算  

        内存对齐原则:

                1.当前元素对于结构体首字节的偏移量必须是本身所占字节的整数倍。  

                2.结构体所占字节数是最大元素所占字节整数倍。

#指针与结构体

                1.结构体指针变量的定义:

struct stu
{    int num;
     char name[20];
     int ave;
};
struct stu *p=&stu;

                ---先给指针赋初值,此后指针指向结构体变量的起始地址;

                2.通过指针访问结构体成员

                               1.)(*p).num=101;

                               2.)   p->num=101;

                3.结构体数组指针的使用

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值