RTKLIB学习笔记——结构体回顾

Struct

  • 结构体:将不同数据类型结合为一个整体的新的数据类型
  • 定义:
struct student{
    char name[10];
    int  total_points;
    char friend[10];

}

定义了一种自定义的、抽象的、非实例的数据类型,可以衍生出多个具体的结构变量

eg:

name:哈哈

total_points:100

friend:嘻嘻

  •  结构体变量赋值方式
struct student s1= {“哈哈”,100,“嘻嘻”};
struct student s1= {.name=“哈哈”,.total_points=100,.friend=“嘻嘻”};
struct student s1= {.total_points=100,.friend=“嘻嘻”,.name=“哈哈”};

都表示:名字叫哈哈,总分100分,朋友是嘻嘻

  • 修改或访问结构体变量的值
s1.total_points=99;
strcpy(s1.total_points,99);
strcpy(s1.name,"啦啦");
  • 内存空间

char[10] 10byte,int 4byte,char[10] 10byte

结构体内存空间非简单相加(10+4+10),要进行字节对齐

        short 2byte 需起始于偶数地址

        int/ float 4byte 需起始于能被4整除的地址

        long/ double 8byte 需起始于能被8整除的地址
        结构体总大小必须为最宽类型字节数的整数倍

eg:

先找到能被1整除的地址作为int name的起始地址,分配10个byte;

向后依次找到能被4整除的地址作为int total_points的起始地址,分配4个byte,系统将中间的间隙填充;

向后依次找到能被1整除的地址作为char friend的起始地址,分配10byte;

判断总大小是否为4的整数倍;

若是结束,否则 在后填充空位至大小为4的整数倍停止。

  • 与其他数据类型相似之处

相同结构体之间可以相互赋值

struct student s1;

struct student s2;
s1=s2;

定义一个数组存放结构体

struct student s[i];

结构体嵌套:在结构体中定义一个结构体成员

struct grade1{
    int total_number[];
    struct student s1;
}

指针

struct student *sp;      //指针声明 指向student结构体的指针sp
struct student *sp =&s1; //获得结构体的地址,s1的首地址

使用指针访问结构体中的成员

1、*sp=s1指针解引用,使用点运算符(*sp).name=s1.name

2、sp->name

参考视频

无背景音乐版_哔哩哔哩_bilibili

 typedef struct

typedef作用:为一种数据类型(int char 等及struct)定义一个新名字

1、定义一个s1结构

typedef struct {

    char name;

    char friend;

} s1;
int main()
{
    s1 mine;// OK s1 是一个类型
    s1.name = "嘻嘻";// ERROR 
}

2、定义一个s2的结构变量,并没有定义一个结构。

struct {

    char name;

    char friend;

} s2;
int main()
{
    s2 mine;// ERROR
    s2.name = "嘻嘻";// OK s2是一个变量
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值