struct members使用循环赋值
发布时间:2020-12-16 09:48:18 所属栏目:百科 来源:网络整理
导读:我有这样的结构 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; ui
我有这样的结构
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在下面的评论提出了不这样做的理由. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |