我很困惑,通過使用工會,我嘗試了不同的方式來訪問它失敗。舉個例子:如何在C中訪問工會
union
{
struct
{
char cycle;
char freq;
char id;
} Umember_a;
char Umember_b[3];
} data_u;
char info[3];
我要複製的「信息」陣列工會「data_u」,但我發現有錯誤,如果我使用下列的任何一個:
memcpy(data_u, info, sizeof(data_u));
memcpy(&data_u, info, sizeof(data_u));
memcpy(data_u.Umember_a, info, sizeof(data_u));
memcpy(data_u.Umember_a, info, sizeof(data_u.Umember_a));
,但我可以使用:
memcpy(data_u.Umember_b, info, sizeof(data_u.Umember_b));
memcpy(&data_u.Umember_a, info, sizeof(data_u.Umember_a);
你能幫我解釋一下嗎?
你得到了什麼錯誤,對於每一個這四個? – unwind 2014-12-03 10:27:19
@Gopi以及'strcpy()'比'memcpy()'更好嗎[如果不是更糟]? – 2014-12-03 10:28:02
@Gopi,我不會在這裏使用'strcpy',因爲它沒有定義'char'數組是零終止的。 'memcpy'或'strncpy'似乎更適合。 – 2014-12-03 10:28:28