结构体,指针函数和数组初始化
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结构体的数组。它包含两个结构体实例,每个实例的成员值都不同。
主要区别在于提供的代码定义了一个结构体的单个实例,而结构体数组允许定义多个实例,并可以使用数组索引来访问它们。
主要区别在于提供的代码定义了一个结构体的单个实例,而结构体数组允许定义多个实例,并可以使用数组索引来访问它们。