结构体初始化的几种方法

这里介绍3种方法:

1. 在结构体的构造函数中初始化

2. 继承模板类初始化

3. 定义时初始化


1. 在结构体的构造函数中初始化

struct wave_pcm_hdr 

{

    char            riff[4];// = "RIFF"

    SR_DWORD        size_8;             // = FileSize - 8

    char            wave[4];            // = "WAVE"
    char            fmt[4];             // = "fmt "
    SR_DWORD        dwFmtSize;          // = 下一个结构体的大小 : 16

    SR_WORD         format_tag;         // = PCM : 1
    SR_WORD         channels;           // = 通道数 : 1
    SR_DWORD        samples_per_sec;    // = 采样率 : 8000 | 6000 | 11025 | 16000
    SR_DWORD        avg_bytes_per_sec;  // = 每秒字节数 : dwSamplesPerSec * wBitsPerSample / 8
    SR_WORD         block_align;        // = 每采样点字节数 : wBitsPerSample / 8
    SR_WORD         bits_per_sample;    // = 量化比特数: 8 | 16

    char            data[4];            // = "data";
    SR_DWORD        data_size;          // = 纯数据长度 : FileSize - 44 


    wave_pcm_hdr()

    {

        // 初始化代码

        memset(this,0,sizeof(wave_pcm_hdr));

    }
} ;


2. 继承模板类初始化

template <typename T> 
class zero_struct 

public: 
    zero_struct() 
    { 
        memset(this,0,sizeof(T)); 
    } 
};

    新定义的结构体都继承于此模板类。 

struct wave_pcm_hdr:zero_struct<wave_pcm_hdr>

    char            riff[4];// = "RIFF"

    SR_DWORD        size_8;             // = FileSize - 8

    char            wave[4];            // = "WAVE"
    char            fmt[4];             // = "fmt "
    SR_DWORD        dwFmtSize;          // = 下一个结构体的大小 : 16

    SR_WORD         format_tag;         // = PCM : 1
    SR_WORD         channels;           // = 通道数 : 1
    SR_DWORD        samples_per_sec;    // = 采样率 : 8000 | 6000 | 11025 | 16000
    SR_DWORD        avg_bytes_per_sec;  // = 每秒字节数 : dwSamplesPerSec * wBitsPerSample / 8
    SR_WORD         block_align;        // = 每采样点字节数 : wBitsPerSample / 8
    SR_WORD         bits_per_sample;    // = 量化比特数: 8 | 16

    char            data[4];            // = "data";
    SR_DWORD        data_size;          // = 纯数据长度 : FileSize - 44 

};


3. 定义时初始化

struct wave_pcm_hdr default_pcmwavhdr = 
{
    { 'R', 'I', 'F', 'F' },
    0,
    {'W', 'A', 'V', 'E'},
    {'f', 'm', 't', ' '},
    16,
    1,
    1,
    16000,
    32000,
    2,
    16,
    {'d', 'a', 't', 'a'},
    0  
};


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值