C语言---浅谈结构体

今天,在学习ESP82266时,发现自己对C语言的结构体不是很理解,特意去补习了一下。仅用于自己的复习,有错误之处请谅解。

1.结构体是什么?

结构体其实也是个类型,就如int一样。不同的是结构体里面有很多成员,这样说很难理解,举个例子吧。

  struct men{                 //定义一个具有name,age,tall成员的men结构体
  	    char name[8];         
  	    int  age;
  	    int  tall;
  };

都说结构体是个类型,那么它相当于什么类型呢?

类型:struct men

成员;name ,age,tall

2.那么,我要怎么定义这个结构体类型的变量呢?

 (1)直接在结构体定义的时候定义变量

  struct men{                 //定义men结构体
  	    char name[8];
  	    int  age;
  	    int  tall;
  }king,joke;

           struct men类型的变量:king ,joke

  (2)先定义结构体(类型),再用这个类型定义变量

  struct men{                 //定义men结构体
  	    char name[8];
  	    int  age;
  	    int  tall;
  };
  struct men king;            //定义结构体变量king
  struct men joke;            //定义结构体变量joke 

           struct men类型的变量:king ,joke

          兄弟,注意了喔,干货要来了,(1)(2)定义的king,joke都只是变量,不是类型,能当作类型来使用喔,朋友

         如果你想又是变量,又可以当作类型使用你就往下看,嘻嘻

(3)在说第三种方法之前,先举个反例先:

  struct men {                 //定义结构体
  	    char name[8];
  	    int  age;
  	    int  tall;
  } men ;                     //变量men          
  men xiaoming;              //其实我也是想定义一个men类型的变量

         这样肯定是不行的,信不信都自己打一下代码,要加一个关键字 typedef 就可以了,废话不多说,上才艺

  typedef struct{                 //定义men型结构体+men变量
  	    char name[8];
  	    int  age;
  	    int  tall;
  } men ;          
  men xiaoming;              //其实我也是想定义一个men类型的变量

        这里的 men 即使变量也是类型,可以安心用它定义结构体了.哈哈哈

3.最后,我们要怎么应用呢?或者说怎么给它里面的成员赋值呢?

答:其实很简单,就是用  ’.‘(点)  操作它呗,废话不多说,上代码

  typedef struct{                 //定义men型结构体+men变量
  	    char name[8];
  	    int  age;
  	    int  tall;
  } men ;          
  men king;                      //定义一个men类型的变量king
  memcpy(king.name, "king", 5);  //给king的成员name赋值“king”
  king.age = 21;                 //给king的成员age赋值“21”
  king.tall = 174;               //给king的成员tall赋值“173”
  printf("name = %s\n",king.name);
  printf("age = %d\n",king.age);
  printf("tall = %dcm\n",king.tall);

看到这里,你肯定会问,memcpy是什么鬼,其实这个C语言的内置函数,因为结构体成员如果是字符数组的话没办法直接进行赋值字符串,所以就用到了内置函数,下面就给大家补充一下一点点小知识:

小知识来了:【给字符数组赋值字符串】

先介绍一下两个猪脚:strcpy 和  memcpy ,下面掌声有请他们秀操作

strcpy(king.name,"king");     

memcpy(king.name,"king",5);

具体参数这样一看就懂,这里解释一下长度为什么是5,而不是4。因为在编译器在字符串结束的地方自动加上一个”\0“,所以这个的加上去。

今天就到这里了,各位,看别人的再好还是得自己动手敲一敲代码,往后会出指针的,因为自己这方面也....,嘻嘻,你们懂的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端独行兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值