话不多说,直接上代码
结构体指针的使用
#include <stdio.h>
#include <stdlib.h>
typedef unsigned char uint8_t; //无符号8位数
typedef unsigned int uint16_t; //无符号16位数
typedef struct {
uint8_t size;
uint8_t* palette_color;
} palette_mode;
int main()
{
palette_mode *image_palette; //结构体指针声明
int num_window = 3;
int num_palette = 4;
int i, j;
image_palette = (palette_mode *)malloc(sizeof(palette_mode)* num_window); // 申请结构体数组(指针)的内存
for (i = 0; i < num_window; i++)
{
image_palette[i].size = i * 2;
image_palette[i].palette_color = (uint8_t*)malloc(sizeof(uint8_t)*num_palette); // 结构体内的指针需要另外独自申请内存,不在结构体申请时申请
for (j = 0; j < num_palette; j++)
{
image_palette[i].palette_color[j] = j * 2;
}
}
for (i = 0; i < num_window; i++)
{
image_palette[i].size = i * 2;
printf("image_palette[%d].size = %d \n", i, image_palette[i].size);
for (j = 0; j < num_palette; j++)
{
printf("image_palette[%d].palette_color[%d] =%d \n", i,j,image_palette[i].palette_color[j]);
}
}
for (i = 0; i < num_window; i++)
free(image_palette[i].palette_color); //结构体内的指针内存释放,避免内存泄漏
getchar();
return 0;
}