结构体
结构体的定义
//定义结构体的结构
struct Test
{
int test1; //成员变量
};
结构体的成员变量更新
main.c
#include "stdio.h"
#include "main.h"
void Test1(INT8U* ucData1, INT8U* uData2);
double sum(double x, double y);
void Test2(struct MCU_PRESS_DATA* test);
int main()
{
struct MCU_PRESS_DATA data1;
struct funds stan =
{
"Garlic-Melon Bank",
4032.27,
"Lucky's savings and loan",
8543.94
};
data1.ucData1 = 2;
data1.uData2 = 25;
Test1(&data1.ucData1, &data1.uData2); //直接修改结构体的成员变量的值
Test2(&data1); //传入结构体,修改结构体的成员变量的值
printf("%d\n", data1.ucData1);
printf("%d\n", data1.uData2);
printf("Stan has a total of $%.2f.\n", sum(stan.bankfund, stan.savefund)); //成员变量的计算
return 0;
}
// 2023 07 19 struct
//结构体:引用结构体的成员变量的值
double sum(double x, double y)
{
return (x + y);
}
//结构体:如果要修改结构体的成员变量的值,需要传递成员变量的地址
void Test1(INT8U * ucData1, INT8U* uData2)
{
*ucData1 = 8;
*uData2 = 24;
//return 0;
}
//结构体:将结构体作为参数,传递到函数中修改成员变量的值
//结构体用 (.) ; 结构体指针用 (->)
//我们假设有一个结构体用 s 表示,一个指向结构体的指针 p ,这个结构体还有一个成员叫做number。
/**这里 s 就是实体,里边真正储存着数据;而 p 是一个指针,里边没有存放值而是一段地址。着也就意味着两种不同的结构自然不可能用同一种操作符了。
/*其实我们也可以使用点来使用结构体指针进行访问。但是需要写成(*p).number。这样显得有些繁琐。至此有一种新的符号箭头(据说这两种符号在C语言的历史上是同时出现的)。我们可以直接使用箭头和结构体指针进行访问 p->number。
当然我们也可以将箭头作为一种快捷方式,也就是语法糖。
*/
void Test2(struct MCU_PRESS_DATA* test)
{
test->ucData1 = 77; //test->ucData1 : test1指向结构的ucData1成员,这使得test->uData1等价于int变量
test->uData2 = 90;
}
main.h
#include "stdio.h"
#define STRUCT_ARRAY_COUNT (50u) //立即数
typedef unsigned char INT8U; //自定义数据类型名称
typedef unsigned int INT16U;
//struct
struct MCU_PRESS_DATA
{
INT8U ucData1;
INT16U uData2;
};
//结构体
struct funds
{
char bank[STRUCT_ARRAY_COUNT];
double bankfund;
char save[STRUCT_ARRAY_COUNT];
double savefund;
};
部分原理参考:
https 😕/blog.csdn.net/weixin_51671868/article/details/120296543