Arduino指向结构变量的指针和指向结构数组的指针打印输出

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino指向结构变量的指针和指向结构数组的指针打印输出相关的知识,希望对你有一定的参考价值。

Arduino指向结构变量的指针和指向结构数组的指针打印输出

struct stu
{
int num;
char *name;
char sex;
float score;
}boy[5]={
{101,"Zhou ping",'M',45},
{102,"Zhang ping",'M',62.5},
{103,"Liou fang",'F',92.5},
{104,"Cheng ling",'F',87},
{105,"Wang ming",'M',58},
};

void setup()
{
  Serial.begin(115200); 

}
void loop()
{
  struct stu *ps;//定义结构指针变量
  char buff[40];
  char str[6];//用于转换结构体浮点数变量输出
Serial.print("No\\tName\\t\\t\\tSex\\tScore\\t\\n");
for(ps=boy;ps<boy+5;ps++){//结构变量指针指向结构数组首地址
dtostrf(ps->score,2,1,str);//浮点数不能直接sprintf()函数输出否则输出为?。
sprintf(buff,"%d\\t%s\\t\\t%c\\t%s\\t\\n",ps->num,ps->name,ps->sex,str);
Serial.println(buff);
delay(3000);
}


}
  • 串口输出
  • 在这里插入图片描述
  • 将指针变量放在结构体定义的后面,效果同上
struct stu
{
int num;
char *name;
char sex;
float score;
}boy[5]={
{101,"Zhou ping",'M',45},
{102,"Zhang ping",'M',62.5},
{103,"Liou fang",'F',92.5},
{104,"Cheng ling",'F',87},
{105,"Wang ming",'M',58},
},*ps;//在这里定义的结构指针变量

void setup()
{
  Serial.begin(115200); 
}
void loop()
{
 // struct stu *ps;//定义结构指针变量
  char buff[40];char str[6];
Serial.print("No\\tName\\t\\t\\tSex\\tScore\\t\\n");
for(ps=boy;ps<boy+5;ps++){//结构变量指针指向结构数组首地址
dtostrf(ps->score,2,1,str);
sprintf(buff,"%d\\t%s\\t\\t%c\\t%s\\t\\n",ps->num,ps->name,ps->sex,str);
Serial.println(buff);
delay(3000);
}
}

*如果指向输出一个学生成员的信息,修改for循环条件即可

for(ps=boy;ps<boy+1;ps++)//只输出{101,"Zhou ping",'M',45}
for(ps=boy+1;ps<boy+2;ps++)//只输出{102,"Zhang ping",'M',62.5}

等待以此类推即可。

  • 姓名name修改成String数据类型,打印则选择%s,对象.c_str()
 struct stu
{
int num;
String name;
char sex;
float score;
}boy[5]={
{101,"Zhou ping",'M',45},
{102,"Zhang ping",'M',62.5},
{103,"Liou fang",'F',92.5},
{104,"Cheng ling",'F',87},
{105,"Wang ming",'M',58},
},*ps;

void setup()
{
  Serial.begin(115200); 

}
void loop()
{
 // struct stu *ps;//定义结构指针变量
  char buff[40];char str[6];

Serial.print("No\\tName\\t\\t\\tSex\\tScore\\t\\n");
for(ps=boy;ps<boy+1;ps++){//结构变量指针指向结构数组首地址
dtostrf(ps->score,2,1,str);
sprintf(buff,"%d\\t%s\\t\\t%c\\t%s\\t\\n",ps->num,(ps->name).c_str(),ps->sex,str);
Serial.println(buff);
delay(3000);
}
}

以上是关于Arduino指向结构变量的指针和指向结构数组的指针打印输出的主要内容,如果未能解决你的问题,请参考以下文章

C语言结构体指针成员所指向的变量如何访问?

C语言-结构体

C语言 | 结构体指针

动态更改指向结构的指针数组的数据类型

C语言结构体指针详解

C语言 指向结构体变量的指针