例如,struct T *ptr;是指向一个结构体的指针,也可以当做一个结构体数组来用。 可以把结构体当做 int 来看,int* 类型即可以指向一个整数,也可以指向数组。
struct T ** ptr, 说白了 就是一个结构体指针的数组,数组内都是指针,还要分配内存。
1,结构体指针用法一:
struSysInfo *SysInfo;
SysInfo = (struSysInfo*)malloc(sizeof(struSysInfo));
SysInfo->VERSION = (char *)malloc(sizeof(char)*10);//VERSION 是结构体中的一个char指针
2,结构体指针用法二:
struParamModel *pParamModel;
ParaModelNum = 20;
pParamModel = (struParamModel*)malloc(sizeof(struParamModel)*ParaModelNum);
for(i = 0;i < ParaModelNum;i++)
pParamModel[i].VERSION = (char *)malloc(sizeof(char)*10);//VERSION 是结构体中的一个char指针
3,指向结构体指针的指针用法一:
BlockCfg **pBlockCfg;
wBlockNum = 100;
devp->pBlockCfg = (BlockCfg**)malloc(sizeof(BlockCfg*)*wBlockNum);
for(b = 0;b < wBlockNum ; b++)
{
devp->pBlockCfg[b] = (BlockCfg*)malloc(sizeof(BlockCfg));
memset(devp->pBlockCfg[j]->BlockType, '\0', 32);//BlockType是结构体中的一个占32字节空间的char型数组
}
4,指向结构体指针的指针用法二:
FrozenTpyes **pFrozeTypes;//一维对应di2pos,二维对应di0pos
wDI2Max = 20;
devp->pFrozeTypes = (FrozenTpyes**)malloc(sizeof(FrozenTpyes*)*wDI2Max);
for(a = 0;a < wDI2Max;a++)
{
wFrozeTimes[a] = a+10;
devp->pFrozeTypes[a] = (FrozenTpyes*)malloc(sizeof(FrozenTpyes)*wFrozeTimes[a]);
for(b = 0; b < wFrozeTimes[a];b++)//次数
{
memset(devp->pFrozeTypes[a][b].chFrozTime,0,12);//chFrozTime为结构体中占12字节空间的char型数组
}
}