簡體   English   中英

使用C中的memcpy訪問Struct成員

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM