mokongking

结构体,指针函数和数组初始化

struct _m_malloc_dev
{
    void(*init)(uint8_t);//初始化函数
    uint8_t (*perused)(uint8_t);//内存使用率
    uint8_t *membase[SRAMBANK];//内存池管理 srambank个区域的内存
    uint16_t *memmap[SRAMBANK];//内存管理状态表
    uint8_t memrdy[SRAMBANK];//内存管理状态是否就绪

};

 struct _m_malloc_dev malloc_dev = 
 {
         my_mem_init,//内存初始化
         my_men_perused,//内存使用率
         mem1base,mem2base,//内存池
        mem1mapbase,mem2mapbase,    //内存管理状态表
        0,0,                           //内存管理未就绪
 };
1. init:一个函数指针,接受一个uint8_t参数,用于初始化内存。
2. perused:一个函数指针,接受一个uint8_t参数,返回内存使用率。
3. membase:一个指向uint8_t指针的数组,表示每个SRAMBANK的内存池。
4. memmap:一个指向uint16_t指针的数组,表示每个SRAMBANK的内存管理状态表。
5. memrdy:一个uint8_t数组,表示每个SRAMBANK的内存管理状态是否就绪。

代码还初始化了一个名为malloc_dev的_m_malloc_dev结构体实例,具体赋值如下:

1. init被赋值为my_mem_init函数。
2. perused被赋值为my_men_perused函数。
3. membase被赋值为mem1base和mem2base。
4. memmap被赋值为mem1mapbase和mem2mapbase。
5. memrdy被赋值为0和0

membase被赋值为mem1base和mem2base,memmap被赋值为mem1mapbase和mem2mapbase,
memrdy被赋值为0和0。这些成员是数组,可以存储多个元素。
在提供的代码中,membase是一个指向uint8_t的指针数组,被初始化为包含两个元素mem1base和mem2base的数组。
类似地,memmap是一个指向uint16_t的指针数组,被初始化为包含两个元素mem1mapbase和mem2mapbase的数组。
最后,memrdy是一个uint8_t数组,被初始化为包含两个值为0的元素的数组。
这样可以让结构体存储这些成员的多个值,可以使用数组索引来访问它们。

结构体的实例也可实现多个
struct _m_malloc_dev malloc_dev_array[2] =
{
    {
        my_mem_init,
        my_men_perused,
        mem1base, mem2base,
        mem1mapbase, mem2mapbase,
        0, 0
    },
    {
        // 第二个具有不同值的_m_malloc_dev实例
        my_mem_init2,
        my_men_perused2,
        mem3base, mem4base,
        mem3mapbase, mem4mapbase,
        1, 1
    }
};在这个示例中,malloc_dev_array是一个_m_malloc_dev结构体的数组。它包含两个结构体实例,每个实例的成员值都不同。

主要区别在于提供的代码定义了一个结构体的单个实例,而结构体数组允许定义多个实例,并可以使用数组索引来访问它们。

 

posted on 2023-07-06 13:57  虎啸岳林  阅读(110)  评论(0编辑  收藏  举报

导航