面试题答案
一键面试#include <stdio.h>
#include <stdint.h>
// 定义内层联合体
union InnerData {
int16_t int_value;
float float_value;
};
// 定义外层结构体
typedef struct OuterHeader {
uint32_t total_length;
union InnerData *inner_data;
} OuterHeader;
// 解析函数,处理不同类型数据
void processInnerData(OuterHeader *header) {
if (header->inner_data == NULL) {
return;
}
// 假设协议中有一个标志位来区分数据类型,这里简单示例
// 比如,通过判断total_length的奇偶性
if (header->total_length % 2 == 0) {
printf("解析到的16位整数: %d\n", header->inner_data->int_value);
} else {
printf("解析到的32位浮点数: %f\n", header->inner_data->float_value);
}
}
你可以使用以下方式调用:
int main() {
// 模拟数据填充
union InnerData inner;
inner.int_value = 10;
OuterHeader outer;
outer.total_length = 100;
outer.inner_data = &inner;
processInnerData(&outer);
return 0;
}