buffer就是一系列的01,对于程序员来说一点用处都没有,而struct是C程序员的一把利器之一,之所以是利器,因为可以利用struct直接操纵buffer,比如拿到一个以太网的数据包,我们如何处理?如果没有struct的话,我们只能用指针小心翼翼的偏移依次取每个字段。大概应该是这样的。
unsigned char dest[6];
unsigned char src[6];
unsigned short type;
int len=0;
for(i=0; i<6; i++)
dest[i] = buffer[i];
for(i=0; i<6; i++); src[i] = buffer[i+6];type = (unsigned short )buffer[12];
咋一看不是很麻烦,但是一般在网络上传输的数据都是这样的buffer,如果每次都需要这样来操作的话,程序员大多都已经吐血身亡了。如果不想吐血身亡的话就只能求助于struct了。熟悉C语言都知道有个东西叫强转,就是把一种数据类型强制转换为另外一种数据类型,但是这样的强转需要保证数据的值的可传递性。比如你不能这么干:
int i;
int *p;
p=(int *)i;
*p = 123;
操作系统不会阻止你这么干,因为你已经动用了强转的王牌了,课时你可真不能这么干,否则大祸临头!