已知结构体定义:
typedef struct
{
unsigned char *name;
struct QUESTION *ques;
} QUERY;
现在在一块连续的内存(数组)中我已经存储了字符串和 QUESTION,该如何访问他们呢?存储时是单独存的,先存了这个 name 字符串,再存了这个 QUESTION, 然后我把这个数组传输到服务器端,我想用 QUERY 这个结构体去访问他们。
我试过将存储 name 的首地址强转成 *query 但是没用啊。C 语言新手求帮助。
这个不一定,因为结构体存在对齐的问题,也就是说,ques所在的地址未必是结构体开始+4字节。
这是禁止直接访问的,向CPU请求从非对齐地址读取数据,会引发异常,你读出来的所谓的name可能就是name中的一部分而已
你可以这样,定义一个QUERY query,uint8_t * ucBuf = ...;调用memcpy(&query, ucBuf, sizeof(query));
query.name即可