这两天整结构体指针强制类型转换的问题,真好碰到一个网友的一个问题,我把这个问题实例化实现, 发现这个实例对弄清楚下面三个问题有很大帮助:
1,结构体指针强制类型转换的问题
2,char字符cout输出的问题
3,结构体数据对齐的问题 具体下面的实例有分析
#include <iostream>
using namespace std;
#pragma pack(1)
typedef struct msg{
unsigned char id;
unsigned char cmd;
unsigned char byte[4];
} MSG;
typedef struct cemsg{
unsigned char id;
unsigned char cmd;
unsigned char data[10];
} CEMSG;
typedef struct msg_p{
unsigned char id;
unsigned char cmd;
unsigned char* ptr;
} MSG_P;
int main(){
/****** 注意:
1. 用void*输出char变量的地址,对于char变量的应用的cout输出,
认为是char*,输出它的 内容
2. 从本次测试来看,指针的类型转换,其实是一种虚拟转换,只是用新结构来解析老结构
在本例中可以明显体会。
*****/
void* addr;