结构体创建,初始化,访问以及嵌套

一.结构体:

首先为什么要用结构体,我们之前从数组可以知道,一个数组可以存放同一种类型的多个元素。而一个结构体可以存放不同类型的多个变量,例如,一个学生类型的结构体,里面有名字(char),年龄(int),身高(float)等等不同的结构体成员。

示例1:结构体的创建

struct student  // struct是结构体关键字   student是结构体标签
{
       char name[10];
       char sex[5];
       int  age;
       float   hight;
       float  score;//大括号内的是不同类型的结构体成员

};//分号不能省略
   //以上创建了一个结构体

示例2:结构体初始化

#include<stdio.h>

//方法一:定义时就初始化
struct student
{
   char name[10];
   char sex[5];
   int age;
   float hight;
};
int main()
{
     struct student s={"zhangsan","男",25,"180.0"};
     return 0;
}

//方法二:先定义后初始化
struct student
{
   char name[10];
   char sex[5];
   int age;
   float hight;
};
int main()
{
     struct student s;
     strcpy(s.name, "zhangsan");//这里字符串必须要用strcpy才可以赋值,不能用"="赋值
     strcpy(s.sex,"男");
     s.age=25;
     s.hight=180.0;//用.找到结构体内部的具体每个成员,并初始化
      return 0;
}


//方法三:定义时乱序风格
struct student
{
   char name[10];
   char sex[5];
   int age;
   float hight;
};
int main()
{
     struct student s={
                       .age=25,
                       .name="zhangsan",
                       .sex="男",
                       .hight="180.0"};
     return 0;
}

示例3:结构体的成员访问

方法一:结构体变量名.成员名

struct student
{
   char name[10];
   char sex[5];
   int age;
   float hight;
};
int main()
{
     struct student s={"zhangsan","男",25,"180.0"};
     printf("%s\n",s.name);
     printf("%s\n",s.sex);
     printf("%d\n",s.age);
     printf("%.1f\n",s.hight);

     return 0;
}

方法二:结构体指针变量名->成员名

#inlcude<stdio.h>
struct student
{
   char name[10];
   char sex[5];
   int age;
   float hight;
};
int main()
{
     struct student s={"zhangsan","男",25,"180.0"};

     struct stedent* ps=&s;
     printf("%s\n",ps->name);   //等价:(*ps).name
     printf("%s\n",ps->sex);    //等价:(*ps).sex
     printf("%d\n",ps->age);    //等价:(*ps).age
     printf("%.1f\n",ps->hight);//等价:(*ps).hight

     return 0;
}

示例4:结构体的嵌套

#inlcude<stdio.h>
struct student
{
   char name[10];
   char sex[5];
   int age;
   float hight;
};
struct teacher
{
   struct student;
   char name[10];
   int id;
   char sex[5];
};


int main()
{
     struct teacher t={{"zhangsan","男",25,"180.0"},"wangwu",101,"男"};

     //访问嵌套结构体内的成员:
     printf("%s\n",t.s.name);
     printf("%s\n",t.s.age);
     printf("%s\n",t.s.sex);
     printf("%s\n",t.s.hight);

     return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值