C语言结构体在keilMDK中的运用和注意事项。

漫谈C语言结构体

相信大家对于结构体都不陌生。在此,分享出本人对C语言结构体的学习心得。如果你发现这个总结中有你以前所未掌握的,那本文也算是有点价值了。当然,水平有限,若发现不足之处恳请指出。代码文件test.c我放在下面。

在此,我会围绕以下2个问题来分析和应用C语言结构体:

1. C语言中的结构体有何作用

2. 结构体成员变量内存对齐有何讲究(重点)

对于一些概念的说明,我就不把C语言教材上的定义搬上来。我们坐下来慢慢聊吧。

==============================================================================================================================================

1. 结构体有何作用

三个月前,教研室里一个学长在华为南京研究院的面试中就遇到这个问题。当然,这只是面试中最基础的问题。如果问你你怎么回答?

我的理解是这样的,C语言中结构体至少有以下三个作用:

(1)有机地组织了对象的属性。

比如,在STM32的RTC开发中,我们需要数据来表示日期和时间,这些数据通常是年、月、日、时、分、秒。如果我们不用结构体,那么就需要定义6个变量来表示。这样的话程序的数据结构是松散的,我们的数据结构最好是“高内聚,低耦合”的。所以,用一个结构体来表示更好,无论是从程序的可读性还是可移植性还是可维护性皆是:

typedef struct //公历日期和时间结构体 {

vu16 year; vu8 month; vu8 date; vu8 hour; vu8 min; vu8 sec; }_calendar_obj;

_calendar_obj calendar; //定义结构体变量

(2)以修改结构体成员变量的方法代替了函数(入口参数)的重新定义。

单片机c语言vu8,漫谈C语言结构体相关推荐

  1. C语言 匿名联合体和匿名结构体

    C语言 匿名联合体和匿名结构体 匿名联合体和匿名结构体顾名思义,就是没有名字的联合体和结构体,没有名字哪怎么用?拿来用? 在嵌入式数据通信里面,大部分都是使用联合体,将有实际意义的结构体和字节数组互相 ...

  2. C语言中函数如何返回结构体?

    //#include "stdafx.h"//If the vc++6.0, with this line. #include "stdio.h" #inclu ...

  3. C语言学生信息管理系统(结构体数组,文件)

    C语言学生信息管理系统(结构体数组,文件) 这是初学时写的一个程序,比较菜,不喜勿喷.在一个结构体里定义结构体内所有的信息(如果信息也需要分类则可以再定义一个结构体并在当前结构体内声明,我的这个代码在 ...

  4. Nwafu-Oj-1444 Problem l C语言实习题七——2.结构体数组的定义与引用

    问题 : C语言实习题七--2.结构体数组的定义与引用 时间限制: 1 Sec  内存限制: 128 MB 提交: 4459  解决: 2011 [提交][状态][讨论版] 题目描述 定义一个职工结构 ...

  5. c语言用数组直接填充结构体,C语言第11题:结构体数组的定义与使用 + 结构体数组排序...

    C语言第11题:结构体数组的定义与使用 + 结构体数组排序 C语言第11题:结构体数组的定义与使用 + 结构体数组排序 注意: 一下赋值是不能使用的 但是在结构体中是可以直接进行赋值操作的 st[1] ...

  6. 【RTOS训练营】课程学习方法和C语言知识(指针、结构体、函数指针、链表)和学员问题

    一.课程学习方法 因为有些学员是刚进群,所以这里再把学习方法讲一下. 1. 预习 我们会在每一节晚课之后会通知要预习的章节,学员需要按如下操作观看相关视频. 1.1 打开百问网官网 ​1.2 点击首页 ...

  7. GO语言编程基础-复合类型结构体

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 1 结构体类型 有时我们需要将不同类型的数据组合成一个有机的整体,如:一个学生有学号/姓名/性别/年龄/地址等属性.显然 ...

  8. c 结构体 不允许使用不完整的类型_C语言必学知识点 quot;结构体quot;详细解析!...

    结构体是经常用到的数据类型,使用频率不亚于指针,所以需要重视,不过用法非常简单. 一.什么是结构体 ☀ 在前面的时候已经介绍了C语言中的数组,用法跟其他语言差不多.当一个整体由多个数据构成时,我们可以 ...

  9. C语言 泛型链表 如何计算(结构体中各元素)相对内存地址?(字节对齐,结构体对齐)offsetof()函数 ( (struct X*)0 ) -> Y)语法(匿名结构体)

    示例: typedef struct _user {char name[20];char sex[20];int age;struct list_head mylist;//自定义结构体里保存双向循环 ...

最新文章

  1. 在IIS上部署基于django WEB框架的python网站应用
  2. 经验分享 怎么新建PDF文件
  3. Android NDK JNI WARNING: illegal start byte 0x
  4. 用Python爬一爬那些年你硬盘存过的老师
  5. Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket差别
  6. git的smart Checkout跟force checkout的区别
  7. 信息安全管理与评估_计算机工程学院教师参加“信息安全管理与评估赛项”说明会...
  8. oh,我的老伙计,你看看这近五十个dapr视频
  9. LeetCode 1094. 拼车
  10. python可变对象与不可变对象_python 可变对象与不可变对象
  11. MySQL 5.7新特性
  12. Golang 须知知识点
  13. admysqlslap压力测试
  14. 微信小程序显示圆形图片
  15. 如何理解会议中控系统
  16. RTL8201-RMII电路
  17. [POI2008]CLO-Toll
  18. PowerBuilder 10 下调用FoxitPDFSDK_AX_Pro.ocx浏览打印PDF文件
  19. 6小时精通springcloud第09讲:微服务安全认证
  20. 【CCF-CSP】202109-1-数组推导100分(含详细注释)

热门文章

  1. PHP构造函数的继承
  2. Linux中Docker入门知识基础
  3. 常见的监测互联网上舆情的方法有哪些?舆情系统方法介绍
  4. 57个你不知道的google工具
  5. HX8358A功放IC规格书
  6. 基于ARM64银河麒麟V10系统(PK体系)适配安装Ambari2.7.3+HDP3.1
  7. nodejs快速入门(一)-模块化开发
  8. 【LFS】Cjktty+uim-fep实现Linux控制台下中文显示与输入
  9. 企业发放的奖金根据利润提成。利润I低于或等于100000元的,奖金可提10%;利润高于100000元,低于或等于200000元
  10. Spark SQL 内置函数(一)Array Functions(基于 Spark 3.2.0)