柔性数组:在结构体中声明的时候仅作为占位符,好处是地址是连续的
强制类型转换:可用于通信双方进行信息交流
#include <iostream>
#include <string.h>
struct DataWater {
int count;
float size;
char buf[0];
};
// dbuf相当于是一个中间件,用于通信双方的交流。通过将dbuf传递给putarray,然后再传递给get_array,实现了数据的传递。
// 同时涉及到柔性数组和强制类型转换的概念
char dbuf[1024] = {0};
void putarray(char *data) {
DataWater *dw;
dw = (DataWater *)data;
dw->count = sizeof("hello world");
dw->size = 20.0;
strcpy(dw->buf, "hello world");
}
void get_array(char *data) {
DataWater *dw;
dw = (DataWater *)data;
std::cout << "count: " << dw->count << std::endl;
std::cout << "size: " << dw->size << std::endl;
std::cout << "buf: " << dw->buf << std::endl;
}
int main() {
putarray(dbuf);
get_array(dbuf);
return 0;
}