找回密码
 注册
7月份电巢直播计划

C语言中结构体struct的用法

2021-7-22 10:54| 查看: 24| 评论: 0

摘要: 定义结构体变量 下面举一个例子来说明怎样定义结构体变量。 struct string{ char name; int age; char sex; char depart; float wage1, wage2, wage3, wage4, wage5;}person; 这个例子定义 ...
定义结构体变量
    下面举一个例子来说明怎样定义结构体变量。









struct string  {     char name[8];     int age;     char sex[2];     char depart[20];     float wage1, wage2, wage3, wage4, wage5;  }person;    这个例子定义了一个结构名为string的结构体变量person。还可以省略变量名person,做如下定义:










struct string  {     char name[8];     int age;     char sex[2];     char depart[20];     float wage1, wage2, wage3, wage4, wage5;  };   struct string person;   //定义结构名为string的结构体变量person    定义多个具有相同形式的结构变量:



struct string Liming, Liuqi, ...;    有一种结构体常常出现在函数内部,省略结构名,则称之为无名结构,如下:









struct  {     char name[8];     int age;     char sex[2];     char depart[20];     float wage1, wage2, wage3, wage4, wage5;  } Liming, Liuqi;结构体成员的获取与赋值
    结构是一个新的数据类型,结构成员的表示方式为:


结构变量.成员名    如果将"结构变量.成员名"看成一个整体,这样就可以像其他变量那样使用。
    下面这个例子定义了一个结构变量stu1,分别给name、age、group赋值,并打印输出。


















#include <stdio.h>int main() {  struct   {    char *name;  //姓名    int age;  //年龄    char group;  //所在小组  } stu1;  //给结构体成员赋值  stu1.name = "Tom";  stu1.age = 18;  stu1.group = 'A';  //读取结构体成员的值  printf("%s的年龄是%d,在%c组\n", stu1.name, stu1.age, stu1.group);  return 0;}结构体数组

    结构体数组就是具有相同结构类型的变量集合,假如要定义一个班级40个同学 的姓名、性别、年龄和住址, 可以定义成一个结构数组。如下所示:









struct {     char name[8];     char sex[2];     int age;     char addr[40];  }student[40];    结构体数组成员的访问是以数组元素为结构变量的, 其形式为:


结构数组元素.成员名    例如:



student[0].name student[30].age结构体指针
    结构体指针由一个加在结构变量名前的*操作符来定义,定义一个结构体指针如下:








struct string{    char name[8];    char sex[2];    int age;    char addr[40]; }*student;    使用结构体指针对结构体成员的访问与结构体变量对结构体成员的访问在表达方式不同。结构体指针对结构体成员的访问方式为


结构体指针名->结构体成员     给上面定义的结构体中name和age赋值的语句:



strcpy(student->name, "acket"); //student->name就是(*student).namestudent->age=18;     需要指出的是结构体指针是指向结构体的一个指针,即结构体中第一个成员的首地址,因此在使用之前应该对结构体指针初始化,即分配整个结构体长度的字节空间



student=(struct string*)malloc(size of (struct string));//size of (struct string)是自动求取string结构体的字节长度    malloc()函数定义了一个大小为结构体长度的内存区域,然后将其地址作为结构体指针返回。

位结构
    位结构是一种特殊的结构体,位结构定义的一般形式为:






struct 位结构名 {     数据类型 变量名: 整型常数;     数据类型 变量名: 整型常数;  }位结构变量;    其中数据类型必须是int(unsigned或signed,但当成员长度为1时, 会被认为是unsigned类型),整型常数必须是0~15的非负整数,表示二进制位个数。变量名是选择项,可以不命名,下面定义了一个位结构:








struct {     unsigned incon: 8;    /*incon占用低字节 的0~7共8位*/     unsigned txcolor: 4;/*txcolor占用高字节的0~3位共4位*/     unsigned bgcolor: 3;/*bgcolor占用高字节的4~6位共3位*/     unsigned blink: 1;  /*blink占用高字节的第7位*/  }ch;    位结构成员的访问与结构体成员的访问相同,访问位结构中的bgcolor成员可写成:


  ch.bgcolor举个例子










struct info{     char name[8];     int age;     struct addr address;     float pay;     unsigned state: 1;     unsigned pay: 1; }workers;    上面结构体定义了工资的信息,其中有两个只有1位的位结构成员,表示工人的状态以及工资是否已发放。
typedef定义结构体








typedef struct  person {  int age ;  char *name;  char *sex;}student;student stu1; //此处可以用student来定义一个结构体变量    typedef的作用就相当于给struct person取了一个别名student。

推荐关注

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』
本站资讯文章系编辑转载,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!
[声明]本站文章版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。
本站拥有对此声明的最终解释权。
收藏 邀请
关闭

推荐内容上一条 /1 下一条

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号 )

GMT+8, 2021-7-27 20:40 , Processed in 0.093750 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19925233282

返回顶部