[英]Accessing Struct members using memcpy in C
我有這樣的結構:
struct x{
int a;
int b;
int c;
}
我有這樣一個數組:
unsigned char bytes[8];
bytes[0] = 1
bytes[1] = 128
bytes[2] = 0
bytes[3] = 0
bytes[4] = 255
bytes[5] = 255
bytes[6] = 0
bytes[7] = 0
我想將struct [0]中的bytes [0]復制到字節[3],將struct [b]中的bytes [4]復制到字節[6],將結構元素“c”中的bytes [7]復制。 我必須使用memcpy。 我怎樣才能做到這一點? 請幫忙。
我的嘗試:
struct x test;
memcpy( &test.a, bytes, 4);
memcpy( &test.b, bytes + 4, 3);
memcpy( &test.c, bytes + 7, 1);
但每次運行它都會顯示不同的結果。
在您的代碼中,您不會初始化test
。 所以最終發生的事情是:
例如,當你做memcpy( &test.b, bytes + 4, 3);
如果你有sizeof(int) == 4
(可能)你最終只寫3個字節,從而留下一個未定義的字節 。
嘗試一些簡單的事情,比如初始化對象:
struct x test = {0};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.