当询问C中常见的未定义行为时,灵魂比我提到的严格别名规则更加开明.
他们在说什么?
我有一个包含, , , , ,的char缓冲区bufbuf[0] = 10buf[1] = 3buf[2] = 3buf[3] = 0buf[4] = 58
和一个结构:
typedef struct
{
char type;
int version;
int length;
}Header;
Run Code Online (Sandbox Code Playgroud)
我想将 转换buf为Header. 现在我正在使用该功能
int getByte( unsigned char* buf)
{
int number = buf[0];
return number;
}
int getInt(unsigned char* buf)
{
int number = (buf[0]<<8)+buf[1];
return number;
}
main()
{
Header *head = new Header;
int location = 0;
head->type = getByte(&buf[location]); …Run Code Online (Sandbox Code Playgroud)