STM32单片机C语言编程结构体相关知识
一、基础
(1)各个变量需要在内存地址上有联系,且各个变量可以是不同类型(优于数组)
单片机printf函数(2)定义结构体类型:
struct Student
{
int score;
};
定义某个结构体类型的变量:
struct Student student1,student2;
或者
struct Student
{
int name;
} student1,student2;
(3)初始化
struct Student
{
int name;
} student1={99};
Printf(“%d”,student.score);
二、结构体数组
struct Person
{
Char name[20];
Int count;
} leader[3]={“Li”,1 , ”Zhang”,2 , “Wang”,3};
三、typedef用法
(1)定义新的类型名
如typedof int Integer; //指定用Integer为类型名,作用与int相同。
int a;与 integer a;等价
(2)在结构体的应用
typedef struct
{
int month;
int day;
int year;
} Date;
定义了一个新的类型名Date,代表上面的一个结构体类型。可以用新的类型名Date去定义变量:
Date birthday; //定义结构体变量birthday
Date *p; //定义结构体指针变量p,指向此结构体类型数据
四、结构体指针
指向结构体的指针,一个结构体变量的起始地址就是这个结构体变量的指针。如果把一个结构体变量的起始地址存放在一个指针变量中,那么这个指针变量就指向该结构体。
struct Student
{
Int score;
} ;
struct Student stu; //定义结构体
struct Student *p; // 定义指向struct Student类型的结构体指针
p=&stu; // p指向stu
stu.score=100;
printf(“%d\n”,(*p).score); //或p->score
五、指向结构体数组的指针
#include <stdio.h>
struct student
{int num;
char name[20];
char sex;
int age;
};
struct student stu[3]={{10101,"Li Lin",'M',18},{10102,"Zhang Fun",'M',19},{10104,"Wang Min",'F',20}};
int main()
{struct student *p; //定义指向struct student结构体的数组
for (p=stu;p<stu+3;p++)
printf("%5d %-20s %2c %4d\n",p->num, p->name, p->sex, p->age);
return 0;
}
P++:p所增加的值为struct Student结构体数组一个元素所占的字节数。本例一个元素理论上占字节为:4+20+1+4=29字节,实际分配32字节。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论