柔性数组+结构体类型转换

柔性数组:在结构体中声明的时候仅作为占位符,好处是地址是连续的
强制类型转换:可用于通信双方进行信息交流

#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;
}

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值