矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 2579|回复: 9

这个单片机的结构体有些奇特啊。

[复制链接]
     
发表于 2018-2-25 00:46:10 | 显示全部楼层 |阅读模式
这是一个万年历的程序,用到了结构体,是一段给年月日时分秒7个元素赋个初值的代码,

struct sTime code InitTime[] = {
        0x2017 , 0x08, 0x01, 0x23, 0x59, 0x50, 0x02
    };
里面用到了数组,结构体和数组也能这样玩,老师说道说道。
结构体.jpg
     
发表于 2018-2-25 07:49:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2018-2-25 07:55:44 | 显示全部楼层
这是定义了一个结构数组。数组没有定义数量,因此可以无限增长,但这取决于编译器的实现。

结构是数据库的基本单元,一旦定义好,便可以整组处理,不用考虑存储空间。
回复 支持 反对

使用道具 举报

     
发表于 2018-2-25 12:18:06 | 显示全部楼层
1:
struct sTime code InitTime = {   0x2017 , 0x08, 0x01, 0x23, 0x59, 0x50, 0x02   };
用法:  InitTime.year

2:
struct sTime code InitTime[2] = {   
      {0x2017 , 0x08, 0x01, 0x23, 0x59, 0x50, 0x02},
      {0x2018 , 0x08, 0x01, 0x23, 0x59, 0x50, 0x02},
   };
用法:  InitTime[0].year  InitTime[1].year  

3:
struct sTime code InitTime[] = {
        {0x2017 , 0x08, 0x01, 0x23, 0x59, 0x50, 0x02},
        {0x2018 , 0x08, 0x01, 0x23, 0x59, 0x50, 0x02},
    };
定义与用法同2

4:
struct sTime code InitTime[] = {
        0x2017 , 0x08, 0x01, 0x23, 0x59, 0x50, 0x02
    };
用法: InitTime[0].year

[x] 由你指定数组成员数量
[] 由编译器帮你算出数组成员个数

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2018-2-25 12:24:19 | 显示全部楼层
0x开头是16进制吧?这样0x2017并不是十进制的2017哦
回复 支持 反对

使用道具 举报

     
发表于 2018-2-25 14:02:50 | 显示全部楼层
这不是一个好方法,不要学它,一旦不是8位机涉及到字节对齐就麻烦了。
回复 支持 反对

使用道具 举报

     
发表于 2018-2-25 14:08:13 | 显示全部楼层
guanyou 发表于 2018-2-25 12:24
0x开头是16进制吧?这样0x2017并不是十进制的2017哦

这个无所谓,我可以是BCD码。
回复 支持 反对

使用道具 举报

     
发表于 2018-2-25 14:44:47 | 显示全部楼层
定义怎么放在后面了!
回复 支持 反对

使用道具 举报

     
发表于 2018-2-25 22:34:56 | 显示全部楼层
结构体就是这样初始化的,没毛病……建议找本C语言的书学一下基本语法
回复 支持 反对

使用道具 举报

     
发表于 2018-2-25 23:30:27 | 显示全部楼层
guanyou 发表于 2018-2-25 12:24
0x开头是16进制吧?这样0x2017并不是十进制的2017哦

这是直接存的8421BCD码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-5-1 05:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表