C语言之玩转结构体1——结构体定义与声明
文章目录
- 一、前言
- 二、名词解释
- 三、结构体声明
- 四、结构体定义及初始化
- 五、运行
- 六、结语
一、前言
结构体作为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——结构体定义与声明相关推荐
- 江哥带你玩转C语言 | 14 - 结构体-枚举-共用体
什么是结构体 结构体和数组一样属于构造类型 数组是用于保存一组相同类型数据的, 而结构体是用于保存一组不同类型数组的 例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为 ...
- go var type 互转_Go语言学习笔记(第九章) 结构体
Go语言基础之结构体 Go语言中没有"类"的概念,也不支持"类"的继承等面向对象的概念.Go 通过类型别名(alias types)和结构体的形式支持用户自定义 ...
- C语言结构体和结构体数组示例 - Win32窗口程序演示
C语言结构体和结构体数组的使用: /* C结构体和结构体数组示例,by bobo */#include <windows.h>LRESULT CALLBACK WndProc (HWND, ...
- python中的记录指针_使用Python向C语言的链接库传递数组、结构体、指针类型的数据...
使用python向C语言的链接库传递数组.结构体.指针类型的数据 由于最近的项目频繁使用python调用同事的C语言代码,在调用过程中踩了很多坑,一点一点写出来供大家参考,我们仍然是使用ctypes来 ...
- c语言定义学生结构体类型,C语言中结构体的三种定义方式
c语言中结构体的定义: struct 结构体名{ 成员列表: ..... }结构体变量: 7.1.1 结构体类型变量的定义 结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对 ...
- C语言之结构体和共用体
C语言之结构体和共用体 算上这篇笔记加上之前的四篇笔记,C语言基础我们也就告一段落了,对于刚刚接触c语言的童鞋们来说,这些以及足够了,稍后我会发布数据结构,对于想要深入学习的童鞋可以继续关注.本人也算 ...
- C语言随笔小算法:char字节流与结构体变量相互转换
C语言随笔小算法:char字节流与结构体变量相互转换 代码: /* **数据域 */ typedef struct {kal_uint8 bt_dpacket_data_total_num; //(可 ...
- python结构体数组传出接收c动态库_使用Python向C语言的链接库传递数组、结构体、指针类型的数据...
使用python向C语言的链接库传递数组.结构体.指针类型的数据 由于最近的项目频繁使用python调用同事的C语言代码,在调用过程中踩了很多坑,一点一点写出来供大家参考,我们仍然是使用ctypes来 ...
- C语言中的结构体,结构体中数组初始化与赋值
最近写c语言中的结构体遇到了些问题,从网上找了些资料如下: 结构体是连续存储的,但由于结构体中成员类型各异,所以会存在内存对齐问题,也就是内存里面会有空档,具体的对齐方式这里 暂不讨论: 1.结构体的 ...
最新文章
- 在Ubuntu 16.04.1 LTS上安装XnView Multi Platform图片浏览器0.83
- 企业绩效管理系统之平衡记分卡
- 机器学习(十七)——决策树, 推荐系统进阶
- amazon云服务_亚马逊Simple Worklfow服务的骆驼演示
- CSS3---4.伪元素选择器
- java8 clock_java8新的时间api
- 哪个版本好_揭秘爱他美奶粉哪个版本好?不同版本爱他美奶粉区别差异是什么?...
- python php mysql_Python 操作 MySQL 的正确姿势
- Fail to convert to internal representation
- Hbase构建二级索引的一些解决方案
- 新酒饮赛道混战升级,果立方和RIO、贝瑞甜心有什么不同?
- 五款免费开源的语音识别工具
- php app接口开发,「PHP开发APP接口实战005」基础示例接口的实现一
- 【工具】目前几种常见的线上接口文档管理平台的比较
- softlayer iso_使用Softlayer Auto Scale缩放Sterling B2B Integrator
- [源代码] [东南大学]学分绩点计算器gpa 1.0.2 升级版
- 你上次被程序猿喷是因为啥?
- 新装Ubuntu配置及部分软件安装
- 您身边专业的会议会展服务专家——大连世博会展服务公司!
- 宝塔apache设置泛目录的反向代理或者莲花泛目录