• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

结构体数组怎么计算字节?

huihui163 2019-07-13 浏览量:1270
typedef struct
{
    uint32_t Timer;                            /@@* 定时计数器 */
    uint16_t Ctrl;                             /@@* 定时器开关控制 */
    uint32_t Cnt;                          /@@* 运行计数器 */
    zlfn_st_t fn_call_back;                     /@@* 回调函数 */
} zl_SoftTimer_t *ptSoftTimer;
zl_SoftTimer_t   a[8];

这个结构体数组a,sizeof(a)怎么计算
1 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案

  • 这里第一个元素占4字节,就是32位

    第二个元素,由于存在字节对齐,也是占4字节,就是32位

    第三个元素占4字节,就是32位

    第四个元素应该是个地址,占4字节,就是32位

    故一个结构体占了16字节,a应该是16*8=128字节

    • 发布于 2019-07-13
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:2
  • 回调函数结构体内保存的是地址,和平台有关。8位系统1字节,16位系统2字节,32位系统4字节,64位系统8字节。

    uint32_t:4字节

    uint16_t:2字节


    • 发布于2019-07-13
    • 举报
    • 评论 0
    • 1
    • 0

  • 可以直接用 sizeof()关键字,这个比较准确。采用不同对齐选项时,结构体的尺寸会有变化。默认是按照变量宽度边界对齐,所以你的结构体按默认对齐方式的话要占用16bytes。 那个uint16_t变量后面会有两个空白字节用以使后面的变量边界对齐。
    • 发布于2019-07-13
    • 举报
    • 评论 0
    • 1
    • 0

相关问题

问题达人换一批

结构体数组怎么计算字节?