结构体指针的应用

一个用得比较多的是结构体指针。如果只把结构体当成一个数据的集合的话,那么结构体并没有什么好用的。在处理二进制格式的数据,尤其是网络数据的数据包的时候,结构体指针非常好用。比如我们定义一个以太网帧首部的格式

struct eth_header {
unsigned char dst[6];
unsigned char src[6];
unsigned short int ptype;
};

我们用socket读到一段二进制数据的时候,把指向该缓存的指针,用一个强制类型转换变成一个struct eth_header*类型的指针,那么这个数据包的内容就可以很容易的读出来了。比如读源地址,只需要这样

unsigned char* buffer = .......
struct eth_header* header = (struct eth_header*) buffer;
printf( "SRC-MAC: %02X-%02X-%02X-%02X-%02X-%02X\n",
header->src[0], header->src[1], header->src[2],
header->src[3], header->src[4], header->src[5] );

sitemap