我想從包結構中使用指針運算得到一些字段。但是下面的代碼有什麼問題?
在第一種情況我想如果我從包開始走4個字節(2短場)我得到TLOW。但它沒有給出預期value.Additionally第二種情況下,我想從包開始去12字節,獲得數據字段我的想法出了什麼問題?void *賦值問題
struct packet{
short len;
short field;
int tLow;
int tHigh;
void *data;
}
int main()
{
struct packet pack;
struct packet *pck;
pack.len=3;
pack.field=34;
pack.tLow=712;
pack.tHigh = 12903;
pack.data = "message";
pck = &pack;
int *timeLow = (int *)pck + 4; // i want to get tLow
printf("Time Low :%d\n",*time);
char *msg = (char *)pck + 12 ;// want data
printf("Message :%s\n",msg);
return 0;
}
我希望這是一個學習練習,而不是生產代碼。這是一個很好的練習,但我從不想看到這樣的真實代碼。 – 2010-10-07 14:17:55
你的意思是訪問字節計算或其他東西的結構成員的方法? – Qxtrml 2010-10-08 07:06:40