C结构体笔记

目录

目录

前言

1、struct用法

2、typedef用法

3、结构体指针的使用

4、结构体数组

前言

        使用结构体不仅使代码更简洁,也使得代码可读性更高。避免出现文件开头大量定义变量的出现,导致可读性低。在项目中应该更加要注重代码的可读性,让其他共同参与开发的人能读懂你所写的代码。

1、struct用法

实例:

在一个调节电机pid控制参数的结构体可以这么定义:

struct pid

{

float kp;

float ki;

float kd;

};

        上面,pid是自己定义的结构体类型;在float kp中,float是结构体成员float kp的数据类型,kp是结构体成员float kp中成员定义的名称。如何使用上述结构体,参照下面。

struct pid motor_pid;

motor_pid.kp = 1.1;

motor_pid.ki = 1.2;

motor_pid.kd = 1.3;

        上述,pid是一种先前定义好的结构体类型,motor_pid是定义pid这一种结构体类型的结构体。然后依次给结构体里面的成员赋值。如motor_pid.kp = 1.1;是给motor_pid结构体中的成员kp,赋值1.1。其他成员如此类推。

        也可以像数组一样赋值,如下:

struct pid motor_pid = {1.1,1.2,1.3};

        如果打算一个结构体只用一次,并起一个名字,也可以这样用,如下面所述。

struct pid

{

float kp;

float ki;

float kd;

}motor_pid;

        上述表示定义完一个结构体,其类型为pid,其名称为motor_pid。然后字节对其成员赋值即可,无需再次另外定义,即如下。     

motor_pid.kp = 1.1;

motor_pid.ki = 1.2;

motor_pid.kd = 1.3;

2、typedef用法

         用上面的例子,在struct pid前面加上typedef:

typedef struct pid

{

float kp;

float ki;

float kd;

}motor_pid;

        那么,motor_pid就变成了一个类型名称,用于替代先前的struct pid。所以使用typedef struct pid之后,需要重新定义一下。

motor_pid motor1_pid;

        才可以对其内容进行赋值。

motor1_pid.kp = 1.1;

motor1_pid.ki = 1.2;

motor1_pid.kd = 1.3;

        又或者这样赋值。

motor_pid  motor1_pid = {1.1,1.2,1.3};

3、结构体指针的使用

        对于前面的:

typedef struct pid

{

float kp;

float ki;

float kd;

}motor_pid;

        要使用这么一个结构体,就需要先定义一下,这里定义为motor2_pid

motor_pid motor2_pid;

        然后,对结构体motor2_pid的成员进行赋值,可以这样操作Pmotor2;。

motor_pid* Pmotor2 = &motor2_pid;

        上述是指,取motor_pid类型的结构体motor2_pid的指针,名且命名为Pmotor2。然后就可以利用指针对其成员进行赋值。

Pmotor2 -> kp = 1.1;

Pmotor2 -> ki = 1.2;

Pmotor2 -> kd = 1.3;

4、结构体数组

        将上述的结构体放到数组里面,就成为了结构体数组。例子如下,取先前讲到的结构体并且做了一些修改。

struct pid

{

float kp;

float ki;

float kd;

}motor_pid[10];

        在结构体的motor_pid后面添加了[10],表示有一个结构体数组motor_pid[10]里面有10个元素。并且,motor_pid[10]里面的元素均是结构体,他们分别为:motor_pid[0]、motor_pid[1]、motor_pid[2]、motor_pid[3]、motor_pid[4]、motor_pid[5]、motor_pid[6]、motor_pid[7]、motor_pid[8]、motor_pid[9]一共10个元素。

        同样的,使用这个结构体数组不需要再重新定义,直接使用即可。例如对motor_pid[0]里面的成员进行赋值。

motor_pid[0].kp = 1.1;

motor_pid[0].ki = 1.2;

motor_pid[0].kd = 1.3;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值