C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了struct members使用循环赋值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这样的结构

struct hour_parameters{
    uint8_t VALUE_00;
    uint8_t VALUE_01;
    uint8_t VALUE_02;
    uint8_t VALUE_03;
    uint8_t VALUE_04;
    uint8_t VALUE_05;
    uint8_t VALUE_06;
    uint8_t VALUE_07;
    uint8_t VALUE_08;
    uint8_t VALUE_09;
    uint8_t VALUE_10;
    uint8_t VALUE_11;
    uint8_t VALUE_12;
    uint8_t VALUE_13;
    uint8_t VALUE_14;
    uint8_t VALUE_15;
    uint8_t VALUE_16;
    uint8_t VALUE_17;
    uint8_t VALUE_18;
    uint8_t VALUE_19;
    uint8_t VALUE_20;
    uint8_t VALUE_21;
    uint8_t VALUE_22;
    uint8_t VALUE_23;
};

struct hour_parameters hparam;

我想分配一个uint8_t x [24] hparam,我怎么能用for循环来做,

hparam.value00 = x[0];
hparam.value01 = x[1];
and so on?

解决方法

你真的应该在你的结构中使用一个数组,但….

#include <String.h>
memcpy(&hparam,x,sizeof(hparam));

(我现在正躲在桌子底下)

这是危险的原因之一是结构中可能的填充.现在,
因为它们都是字节,所以你很安全.但是,从技术上讲,这种
东西不合法.你手头可以做的一件事是

assert(sizeof(hparam) == sizeof(X));

如果你坚持使用for循环:

for(int i = 0; i != sizeof(hparam); i++) {
    ((uint8_t *)&hparam)[i] = x[i];
}

这既丑陋又不太犹豫. Kerrek在下面的评论提出了不这样做的理由.

大佬总结

以上是大佬教程为你收集整理的struct members使用循环赋值全部内容,希望文章能够帮你解决struct members使用循环赋值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。