结构体学习笔记


   什么是结构体
   1、不同类型的变量集合
   2、结构体的目的是为了描述一个对象,为了把一个对象描述清楚,必须要说出这个对象的很多属性,为了表示这些属性,就要用到不同的变量,且变量不止一个。
   工人:
       工号、姓名、性别、年龄、基本工资
   
   如何来定义结构体
   struct 结构体名
   {
   属性列表
   };

  struct worker//定义一个结构体,描述一个工人
   {
       char id[10];//工号
       char name[10];
       char gender[10];
       int salary;
   };


   如何定义结构体变量:
   1、  刚才定义的只是类型,并不是变量。
   2、  在c程序有三种类型是已经做好的,只要拿来使用就可以了。 int char  float
   但是结构体在c里面没有,需要自己来定义
   3、  刚定义的类型: struct worker
   4、 定义结构体变量有三种方式:
     1:在定义结构体的时候,就定义变量,这时定义的变量是全局变量
     2: 在定义结构体类型之后,再定义结构体变量
     3:可以通过typedef这个关键字,为结构体变量取别名

struct worker//定义一个结构体,描述一个工人
   {
   char id[10];//工号
   char name[10];
   char gender[10];//性别
   int salary;
   }w1,w2,w3;//定义了三个结构体变量


  
  

  struct worker//这是在定义结构体类型
   {
       char id[10];//工号
       char name[10];
       char gender[10];
       int salary;
   };
   
    如何输出结构体变量的值
   1、 由于结构体变量里面会包含很多属性,,所以要分别输出,不能整体输出
   2、 格式: 结构体变量名.属性名
   3、 结构体变量虽然不能整体输出,但是可以整体赋值
   main()
   {
   //给结构体变量赋初值
   struct worker w1={"001","法师","男",12000},w2{"002","射手","男",17000};//w1,w2它们属性相同,但是属性值不同
   //如何输出结构体变量的值
       printf("%s,%s,%s,%d",w1.id,w1.name,w1.gender,w1.salary);
       w3.id=w1.id;
       w3.name=w1.name;
       w3.gender=w1.gender;
       w3.salary=w1.salary;
       //或者
       w3=w1;//整体赋值
       int a,b;
   }
   
   
   结构体数组
   
   main()
   {
       void output(Wor a[],int n);
       Wor a[5]=
       {
        w1={"001","法师","男",12000},
        w2={"002","射手","男",17000},  
        w3={"003","射手1","男",171000}   
       };//定义了一个结构体数组,名为a里面包含5个元素,每个元素都是一个结构体变量
       int a[4]={1,2,3,4};
       printf("工号\t姓名\t年龄\n");
       int i;
       for(i=0;i<6;i++)
       {
           printf("%s,%s,%s,%d",a[i].id,a[i].name,a[i].gender,a[i].salary);
       }
       output(a,6);
   }
   //结构体数组中a[i]就代表一个对象,它已经不在是一个值了,所以我们应该用a[i].成员名
   void output(Wor a[],int n)
   {
       int i;
       for(i=0;i<n;i++)
       {
           printf("%s,%s,%s,%d",a[i].id,a[i].name,a[i].gender,a[i].salary);
       }
   }
   
   属性为字符串的不能直接比较大小,需要通过strcmp函数来比较。
   a[i].sex=="男"这是错的
   if(strcmp(a[i].sex,"男")==0)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值