文章目录

  • 一、前言
  • 二、名词解释
  • 三、结构体声明
  • 四、结构体定义及初始化
  • 五、运行
  • 六、结语

一、前言

结构体作为C语言中的重要一环,可以用它来对数据进行封装,把一些相似的成员放在同一个结构体中,其对于代码的可维护性以及移植性等带来的好处不言而喻。

当结构体变量被定义后,其内部成员会被系统自动分配在一段地址连续的内存空间中,这使得我们的引用操作也变得方便许多。

一些同学在刚接触结构体时,容易对结构体的定义以及声明这块搞不清楚,下面我把结构体的声明和定义归类总结了一下,分享给大家。

二、名词解释

在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型。

简单来说就是:由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构体(struct)。

三、结构体声明

结构体声明一般是放在一个.h文件中,当需要定义结构体时,再include包含一下该头文件即可。
头文件代码如下:

#ifndef __STRUCT_DEMO_
#define __STRUCT_DEMO_/** 结构体的几种声明方式:*  一、使用typedef来重命名结构体。*/
typedef struct _student_t   //推荐,只声明结构体,不分配内存空间,需要用时另行定义
{int age;unsigned char score;char *sex;
}student1_t;typedef struct         //结构体名称可以省略
{int age;unsigned char score;char *sex;
}student2_t;/** *  二、直接声明结构体 */struct _student3_t   //推荐,只声明结构体,不分配内存空间,需要用时另行定义
{int age;unsigned char score;char *sex;
};struct _student4_t   //声明结构体的同时把变量也给定义了,会分配内存空间,不推荐
{int age;unsigned char score;char *sex;
}stu4,stu5;struct   //同理,结构体名称也可以省略
{int age;unsigned char score;char *sex;
}stu6;#endif

声明结构体是不占内存空间的,也不会生成变量,推荐在.h中对头文件进行声明。

四、结构体定义及初始化

在.c文件中对结构体变量进行定义

有几种定义方式,看代码:

#include "stdio.h"
#include "struct_demo.h"/** 结构体初始化的几种方式:*  */
student1_t student1 = {18,90,"boy"};   //1、定义时赋初值,需要按顺序填写
student1_t student2 = {           //2、定义时赋初值,可以打乱顺序 .age = 19,.score = 95,.sex = "girl"
};
student1_t student3 = {           //3、定义时赋初值,可以打乱顺序 age : 19,score : 95,sex : "girl~"
};
//第四种方法是直接引用赋值,这里不再举例了。
int main()
{printf("%d,%d,%s\r\n",student1.age,student2.score,student3.sex);printf("%d,%d\r\n",stu4.age,stu6.score);  return 0;
}

五、运行

六、结语

如您在使用过程中有任何问题,请加QQ群进一步交流。

QQ交流群:906015840 (备注:物联网项目交流)。

获取资料:微信扫描下方二维码,关注公众号:一个物联网项目的前世今生。

静晨出品:静之所想,晨之所计

C语言之玩转结构体1——结构体定义与声明相关推荐

  1. 江哥带你玩转C语言 | 14 - 结构体-枚举-共用体

    什么是结构体 结构体和数组一样属于构造类型 数组是用于保存一组相同类型数据的, 而结构体是用于保存一组不同类型数组的 例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为 ...

  2. go var type 互转_Go语言学习笔记(第九章) 结构体

    Go语言基础之结构体 Go语言中没有"类"的概念,也不支持"类"的继承等面向对象的概念.Go 通过类型别名(alias types)和结构体的形式支持用户自定义 ...

  3. C语言结构体和结构体数组示例 - Win32窗口程序演示

    C语言结构体和结构体数组的使用: /* C结构体和结构体数组示例,by bobo */#include <windows.h>LRESULT CALLBACK WndProc (HWND, ...

  4. python中的记录指针_使用Python向C语言的链接库传递数组、结构体、指针类型的数据...

    使用python向C语言的链接库传递数组.结构体.指针类型的数据 由于最近的项目频繁使用python调用同事的C语言代码,在调用过程中踩了很多坑,一点一点写出来供大家参考,我们仍然是使用ctypes来 ...

  5. c语言定义学生结构体类型,C语言中结构体的三种定义方式

    c语言中结构体的定义: struct 结构体名{ 成员列表: ..... }结构体变量: 7.1.1 结构体类型变量的定义 结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对 ...

  6. C语言之结构体和共用体

    C语言之结构体和共用体 算上这篇笔记加上之前的四篇笔记,C语言基础我们也就告一段落了,对于刚刚接触c语言的童鞋们来说,这些以及足够了,稍后我会发布数据结构,对于想要深入学习的童鞋可以继续关注.本人也算 ...

  7. C语言随笔小算法:char字节流与结构体变量相互转换

    C语言随笔小算法:char字节流与结构体变量相互转换 代码: /* **数据域 */ typedef struct {kal_uint8 bt_dpacket_data_total_num; //(可 ...

  8. python结构体数组传出接收c动态库_使用Python向C语言的链接库传递数组、结构体、指针类型的数据...

    使用python向C语言的链接库传递数组.结构体.指针类型的数据 由于最近的项目频繁使用python调用同事的C语言代码,在调用过程中踩了很多坑,一点一点写出来供大家参考,我们仍然是使用ctypes来 ...

  9. C语言中的结构体,结构体中数组初始化与赋值

    最近写c语言中的结构体遇到了些问题,从网上找了些资料如下: 结构体是连续存储的,但由于结构体中成员类型各异,所以会存在内存对齐问题,也就是内存里面会有空档,具体的对齐方式这里 暂不讨论: 1.结构体的 ...

最新文章

  1. 在Ubuntu 16.04.1 LTS上安装XnView Multi Platform图片浏览器0.83
  2. 企业绩效管理系统之平衡记分卡
  3. 机器学习(十七)——决策树, 推荐系统进阶
  4. amazon云服务_亚马逊Simple Worklfow服务的骆驼演示
  5. CSS3---4.伪元素选择器
  6. java8 clock_java8新的时间api
  7. 哪个版本好_揭秘爱他美奶粉哪个版本好?不同版本爱他美奶粉区别差异是什么?...
  8. python php mysql_Python 操作 MySQL 的正确姿势
  9. Fail to convert to internal representation
  10. Hbase构建二级索引的一些解决方案
  11. 新酒饮赛道混战升级,果立方和RIO、贝瑞甜心有什么不同?
  12. 五款免费开源的语音识别工具
  13. php app接口开发,「PHP开发APP接口实战005」基础示例接口的实现一
  14. 【工具】目前几种常见的线上接口文档管理平台的比较
  15. softlayer iso_使用Softlayer Auto Scale缩放Sterling B2B Integrator
  16. [源代码] [东南大学]学分绩点计算器gpa 1.0.2 升级版
  17. 你上次被程序猿喷是因为啥?
  18. 新装Ubuntu配置及部分软件安装
  19. 您身边专业的会议会展服务专家——大连世博会展服务公司!
  20. 宝塔apache设置泛目录的反向代理或者莲花泛目录

热门文章

  1. 控制策略为最大功率跟踪(mppt),跟踪方法为扰动观察法,MPPT控制系统主要由光伏阵列、DCDC变换器
  2. 软件工程(三)软件可行性研究
  3. 意大利卡乐1tool编程软件从模板新建项目
  4. 创维linux系统怎么上网,创维电视怎么看网络电视 该如何连接网络【图文】
  5. 杭州城西科创大走廊管委会副主任一行莅临谐云实地调研
  6. Java后端高频面试题集锦 1
  7. linux 软件源 ppa,使用PPA源安装软件
  8. 黑鹰坠落之战队之刃 全攻略
  9. OpenJDK源码下载
  10. 存储基础知识及硬盘挂载