2020-11-02

具有数组和指针的typedef类型的嵌套式结构体及结构体成员初始化赋值

前言

一、数组

二、指针

三、typedef型结构体

1.无嵌套类型成员初始化

2.有嵌套类型成员初始化

3.指针数组结构体联合使用

4.指针、数组、结构体及嵌套联合使用的结构体成员初始化

总结


前言

本文简单介绍了数组、指针以及typedef类型结构体变量的概念及基本用法,主要介绍typedef类型的结构体变量,以及如何初始化结构体成员。代码部分在keil MDK上写的。

一、数组

int arr[10]={1,2,3,4,5,6,7,8,9,10}

int是数组的类型,即数组成员是整型;arr是数组的名字;10是数组的成员数,即该数组有10个成员。{}中的数字是数组成员的初始值。

arr[0]表示数组第一个成员,值为1;arr[1]表示数组第二个成员,值为2;依次类推,arr[9]表示数组的第10个成员,值为10。

二、指针

int*  p;

int   a=20;

p为指针变量,用来存放变量的地址。int为指针变量的类型,表示p只能存放整型变量的地址。

p=&a;       //&表示取地址

*p=20;     //*表示取值

下面这几句代码是对指针最基础的理解

    int aaa=10;
	printf("%p\r\n",&aaa);  //打印aaa的地址,有一种变量来存放地址的-指针变量
	int* p=&aaa;
	printf("%p\r\n",p);
	printf("%d\r\n",*p);    //取值
	*p=20;
	printf("%d\r\n",aaa);
	
	char ch1='a';
	char* pp=&ch1;
	printf("%p\r\n",pp);
	printf("%c\r\n",*pp);
	*pp='c';
	printf("%c\r\n",ch1);

三、typedef型结构体

1.无嵌套类型成员初始化

typedef struct
{
 int age;
 float weight;
 char name[20];
}STU;
该结构体是利用typedef定义的类型,STU是该结构体的名字;age、weight、name是该结构体的成员。
定义结构体变量
STU  stu;stu是结构体变量名,该变量是通过STU来定义的。
对变量stu初始化。
stu={20,65.7,"zhangsan"};
结构体成员取值
printf("%d\r\n",stu.age);
printf("%.1f\r\n",stu.weight);
printf("%c\r\n",stu.name);

2.有嵌套类型成员初始化

typedef struct
{
 int age;
 float weight;
 char name;
 SCORE score;   //score是具有SCORE结构体类型的结构体变量
}STU;

typedef struct
{
 float yuwen;
 float shuxue;
 float yingyu;
}SCORE;

该结构体是利用typedef定义的类型,STU是该结构体的名字;age、weight、name是该结构体的成员。
定义结构体变量
STU  stu;stu是结构体变量名,该变量是通过STU来定义的。
对变量stu初始化。
stu={20,65.7,'zhangsan'};
score={97,99,100};
结构体成员取值
printf("%d\r\n",stu.age);
printf("%.1f\r\n",stu.weight);
printf("%c\r\n",stu.name);

printf("%d\r\n",stu.score.yuwen);
printf("%d\r\n",stu.score.shuxue);
printf("%d\r\n",stu.score.yingyu);

3.指针数组结构体联合使用

int nCh;
typedef struct
{ 
	float wZ;
	float wC;
	float wF;
	float wG;
}PGA;
PGA  Pga[3]={{33.56,22.65,35.71,44.29},{22.31,33.32,44.41,33.32},{66.31,22.89,33.74,88.65}};  //每个通道的初始参数不一样
PGA_DESC*	pChX =&Pga[nCh]; 
printf("%.2f\r\n",pChX->wZ);
printf("%.2f\r\n",pChX->wC);
printf("%.2f\r\n",pChX->wF);
printf("%.2f\r\n",pChX->wG);

4.指针、数组、结构体及嵌套联合使用的结构体成员初始化

typedef struct 
{
	uint16_t wGain;
	uint16_t IsDeinit;
}PGA;
	
typedef struct
{  	
	uint16_t  wCFG0;
    uint16_t  wGDAC;
	uint16_t  wZDAC;
	PGA  tStat;
}PGA_REG;

typedef struct
{ 
	float wZeroLow;
	float wCoarseTH;
	float wFineStep;
	float wZeroHgh;
}PGA_DESC;

typedef struct
{ 
    PGA_DESC PgaDesc[3];
	PGA_REG REG[3];
    float ui;
}PGA_DESC1;
PGA_DESC1  DEV_Default=
{
{{33.56,22.2,33.6,44.7},{22.35,33.2,33.32,22.3},{33.3,56.3,89.6,65.6}},
{{23,24,25,{32,33}},{78,79,80,{33,24}},{97,98,99,{35,36}}},
66.74
};

PGA_DESC* pChX = (PGA_DESC*)&DEV_Default.PgaDesc[nCh];
PGA_REG	 mReg  = DEV_Default.REG[nCh];
printf("%.2f,%.2f,%.2f,%.2f\r\n",pChX->wCoarseTH,pChX->wZeroLow,pChX->wFineStep,pChX->wZeroHgh);
printf("%d,%d,%d,%d\r\n",mReg.wCFG0,mReg.tStat.gain,mReg.wGDAC,mReg.tStat.wGain);

 

总结

本人是小白,能力有限。只是把自己知道的和理解的表达了出来,不足之处还请大家指教,互相学习。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值